PIPS
splitc.c
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6  Inc.
7 
8  This program is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program. If not, see <https://www.gnu.org/licenses/>. */
20 
21 /* As a special exception, you may create a larger work that contains
22  part or all of the Bison parser skeleton and distribute that work
23  under terms of your choice, so long as that work isn't itself a
24  parser generator using the skeleton or a modified version thereof
25  as a parser skeleton. Alternatively, if you modify or redistribute
26  the parser skeleton itself, you may (at your option) remove this
27  special exception, which will cause the skeleton and the resulting
28  Bison output files to be licensed under the GNU General Public
29  License without this special exception.
30 
31  This special exception was added by the Free Software Foundation in
32  version 2.2 of Bison. */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35  simplifying the original so-called "semantic" parser. */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38  especially those whose name start with YY_ or yy_. They are
39  private implementation details that can be changed or removed. */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42  infringing on user name space. This should be done even for local
43  variables, as they might otherwise be expanded by user macros.
44  There are some unavoidable exceptions within include files to
45  define necessary library symbols; they are noted "INFRINGES ON
46  USER NAME SPACE" below. */
47 
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50 
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53 
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers. */
58 #define YYPURE 0
59 
60 /* Push parsers. */
61 #define YYPUSH 0
62 
63 /* Pull parsers. */
64 #define YYPULL 1
65 
66 
67 /* Substitute the variable and function names. */
68 #define yyparse splitc_parse
69 #define yylex splitc_lex
70 #define yyerror splitc_error
71 #define yydebug splitc_debug
72 #define yynerrs splitc_nerrs
73 #define yylval splitc_lval
74 #define yychar splitc_char
75 
76 /* First part of user prologue. */
77 #line 52 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
78 
79 #ifdef HAVE_CONFIG_H
80  #include "pips_config.h"
81 #endif
82  /* C declarations */
83 #include <stdio.h>
84 #include <string.h>
85 #include <stdlib.h>
86 
87 #include "genC.h"
88 #include "linear.h"
89 #include "ri-util.h"
90 #include "misc.h"
91 #include "properties.h"
92 
93 #include "preprocessor.h"
94 
95 #define C_ERROR_VERBOSE 1 /* much clearer error messages with bison */
96 
97 /* Increase the parser stack to have SPEC2006/445.gobmk/owl_defendpat.c
98  going through without a:
99 
100  user warning in splitc_error: C memory exhausted near "0" at preprocessed line 13459 (user line 8732)
101 */
102 #define YYMAXDEPTH 1000000
103 
104 /* The following global variables are used to store the information such as
105  the scope, type and storage of an entity, given by the decl_spec_list,
106  which are used later by direct_decl to create the entity.
107 
108  For the moment, block scope is not considered. CurrentScope can be File,
109  Module, File'FILE_SEP_STRING'Module or TOP-LEVEL*/
110 
111 /* static string CurrentScope = NULL; */
112 /*
113 static type CurrentType = type_undefined;
114 static storage CurrentStorage = storage_undefined;
115 static list CurrentQualifiers = NIL; */
116 /* static string CurrentDerivedName = NULL; */ /* to remember the name of a struct and add it to the member prefix name*/
117 /* static int CurrentMode = 0; */ /* to know the mode of the formal parameter : by value or by reference*/
118 
119 int csplit_is_external = 0; /* to know if the variable is declared inside or outside a function */
120 int csplit_is_function = 0; /* to know if this is the declaration of a function or not, to distinguish between
121  a static variable and a static function */
122 /* Shared with the lexical analyzer */
127 
128 
130 {
135  }
138  }
139 }
140 /* static int enum_counter = 0; */
141 
142 /* Shared with the lexical analyzer */
143 bool csplit_is_static_p = false;
144 static bool current_function_is_static_p = false;
145 
147  const char * pips_func,
148  const char * pips_file,
149  const int pips_line,
150  const string format,
151  va_list * args)
152 {
153  if (get_bool_property("NO_USER_WARNING"))
154  return;
155 
156  string cpn = get_pips_current_pass_name();
157  if (cpn==NULL)
158  cpn = "unknown";
159 
161  // note: this is the line number in the preprocessed file, which changes
162  // from cpp to cpp because of inserted preprocessor junk...
163  int ln = csplit_line_number;
165 
167  (const string) pips_func, (const string) pips_file, pips_line,
168  NULL, (const string) uifn, ln, -1,
169  s, "see stderr for exact file and line number",
170  (const string) format, args);
171  free(s);
172 }
173 
175  const char * pips_func,
176  const char * pips_file,
177  const int pips_line,
178  const string format,
179  ...)
180 {
181  va_list args;
182  va_start(args, format);
183  csplit_parser_warning_alist(pips_func, pips_file, pips_line, format, &args);
184  va_end(args);
185 }
186 
187 /* Redundant with splitc_error()? */
188 void csplit_parser_error(const string msg)
189 {
190  /* Should add the current line number of the lexer */
191 
192  /* csplit_parser_warning("Corrupted or non-supported C constructs.\n" */
193  /* "Make sure your code is compiled by gcc -stc=c99 first, " */
194  /* "and/or set proper PIPS option, " */
195  /* "CHECK_FORTRAN_SYNTAX_BEFORE_RUNNING_PIPS or " */
196  /* "CHECK_C_SYNTAX_BEFORE_RUNNING_PIPS.\n"); */
197 
199 
200  //pips_internal_error("Not implemented yet\n."
201  // " Should reset all static variables.\n");
202  /* Reset all static variables */
203  /* Close all open files: at least three... */
204  extern string current_file_name;
207 
208  // See syn_reset_lex() -> syn_restart(syn_in); as in ParserError,
209  // the error routine for the Fortran parser, but its lexer is
210  // made of two passes, a Fortran-specific first pass and a lex second pass
211  // syn_restart(splitc_in);
212  // yy_flush_buffer(); //YY_FLUSH_BUFFER;
213  splitc_lex_destroy(); // trial and error
214  // BEGIN(0); we might have to reset the state of lex
215 
216  //pips_user_error(s);
217  pips_user_error("Corrupted or non-supported C constructs.\n"
218  "Make sure your code is compiled by gcc -stc=c99 first, "
219  "and/or set proper PIPS option, "
220  "CHECK_FORTRAN_SYNTAX_BEFORE_RUNNING_PIPS or "
221  "CHECK_C_SYNTAX_BEFORE_RUNNING_PIPS.\n");
222 }
223 
224 /* All the following global variables must be replaced by functions, once we have the preprocessor for C */
225 
226 static int csplit_is_typedef = false; /* to know if this is a typedef name or not */
228 
229  static void PushTypedef()
230  {
231  pips_debug(8, "csplit_is_typedef = %s\n", bool_to_string(csplit_is_typedef));
233  csplit_is_typedef = false;
234  pips_debug(8, "csplit_is_typedef = %s\n", bool_to_string(csplit_is_typedef));
235  }
236 
237  static void PopTypedef()
238  {
240  pips_debug(8, "csplit_is_typedef = %s\n", bool_to_string(csplit_is_typedef));
241  }
242 
244  {
245  pips_assert("TypedefStack is undefined", stack_undefined_p(TypedefStack));
247 }
248 
250  {
254  }
255  else
256  pips_internal_error("TypedefStack is not empty");
257  }
258 
260 {
263 }
264 ␌
265  /* Each scope in the compilation unit has its own number
266  *
267  * The scope management in the C preprocessor is different from the
268  * scope management in the C parser.
269  */
270 #define SCOPE_UNDEFINED (-1)
273 
275  {
278  }
279 
281  {
286  }
287  else {
288  // pips_internal_error? Could be a bad input C file...
289  pips_user_warning("Preprocessor scope stack is not empty.\n");
290  }
291  }
293  return;
294  }
295 
296  /* To be used by an error handler */
298  {
302  }
304  return;
305  }
306 
308  {
310  string sn = string_undefined;
311  (void) asprintf(&sn, "%d", c_preprocessor_scope_number);
313  return;
314  }
315 
317  {
319  return;
320  }
321 
323 {
325 }
326 
328  {
329  string sn = string_undefined;
331  // We are at the global level: no scope has been entered yet
332  sn = "";
333  }
334  else
336  return sn;
337  }
338 
340  {
341  string sn = (string) stack_nth(c_preprocessor_scope_stack, n);
342  return sn;
343  }
344 
346  {
348  return n;
349  }
350 ␌
351 /* If any of the strings is undefined, we are in trouble. If not,
352  concatenate them with separator into a new string and free all input
353  strings. No more than six arguments. */
354 
357 
358 static string new_signature(const string s)
359  {
360  string new_s = strdup(s);
362  return new_s;
363  }
364 
365 static void free_partial_signature(string s)
366  {
368  if(!string_undefined_p(s))
369  free(s);
370  }
371 
372 static string general_build_signature(bool arguments_are_defined_p,
373  string s1,
374  va_list * p_some_arguments)
375  {
376  /* va_list some_arguments; */
377  int count = 0;
378  string s = NULL;
379  string sa[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
380  string r = string_undefined;
381  int i;
382  bool some_argument_undefined_p = false;
383 
384  /* va_start(*some_arguments, s1); */
385  s = s1;
386  while(s) {
387  if(string_undefined_p(s)) {
388  /* We are in trouble */
389  if(arguments_are_defined_p)
390  pips_internal_error("Unexpected undefined argument %d", count+1);
391  else
392  some_argument_undefined_p = true;
393  }
394  else if(s==NULL) {
395  /* We are in trouble too */
396  pips_internal_error("Unexpected NULL argument");
397  }
398  else if(strcmp(s, "")==0) {
399  free(s);
400  }
401  else {
402  pips_debug(9, "s%d = \"%s\"\n", count, s);
403  sa[count++] = s;
404  }
405  s = va_arg(*p_some_arguments, string);
406  }
407 
408  pips_assert("No more than 6 effective arguments (check grammar rules).",
409  count<=6);
410 
411  if(some_argument_undefined_p)
412  r = string_undefined;
413  else {
414  r = strdup(concatenate("", sa[0], " ", sa[1], " ", sa[2], " ",
415  sa[3], " ", sa[4], " ", sa[5], "", NULL));
416 
418  }
419 
420  pips_debug(9, "%d arguments:\n", count);
421 
422  for(i=0; i<count; i++) {
423  int j;
424  for(j=0; i<count; i++) {
425  if(sa[i]==sa[j]&&i!=j) pips_internal_error("Unexpected common arguments\n");
426  }
427  }
428 
429  for(i=0; i<count; i++) {
430  /* pips_debug(9, "s%d = \"%s\"\n", i, sa[i]); */
432  free(sa[i]);
433  }
434 
435  pips_assert("An argument may be really undefined only if"
436  " arguments are not guaranteed to be defined",
437  !(some_argument_undefined_p && arguments_are_defined_p));
438  pips_assert("If all arguments are defined, the result is defined",
439  some_argument_undefined_p || !string_undefined_p(r));
440 
441  pips_debug(8, "Returns: \"%s\"\n", string_undefined_p(r)? "STRING_UNDEFINED" : r);
442 
443  return r;
444  }
445 
446 /* All arguments must be defined. The result is always defined. */
447 static string build_signature(string s1, ...)
448  {
449  va_list some_arguments;
450 
451  va_start(some_arguments, s1);
452  return general_build_signature(true, s1, &some_arguments);
453  }
454 
455 /* Arguments may be defined or not, but as soon as one is undefined, an
456  undefined_string is returned.*/
457 static string safe_build_signature(string s1, ...)
458  {
459  va_list some_arguments;
460 
461  va_start(some_arguments, s1);
462  return general_build_signature(false, s1, &some_arguments);
463  }
464 
465 /* Get rid of useless spaces: multiple contiguous spaces, spaces next to a
466  separator,... Some look ahead required to get rid of spaces before a
467  separator. Could be moved into build_signature but it seemed easier to
468  separate concerns. */
469  static string simplify_signature(string s)
470  {
471  string new_s = strdup(s); /* Make sure to allocate enough space... */
472  string source = s+1;
473  string destination = new_s;
474 
475  pips_debug(8, "Begin with signature \"%s\"\n", s);
476 
477  pips_assert("The signature is not empty", *s);
478 
479  /* source points to the next character to copy and destination to the
480  last character copied. The first character is already copied. */
481  while(*source) {
482  if(*destination==' ') {
483  if(*source==' ') {
484  /* Do not copy a second space */
485  source++;
486  }
487  else if (*source==',' || *source=='(' || *source==')' || *source==';') {
488  /* Overwrite the space in the destination */
489  *destination = *source++;
490  }
491  else {
492  /* Normal copy */
493  *++destination = *source++;
494  }
495  }
496  else if(*destination=='(' || *destination=='*') {
497  if(*source==' ') {
498  /* Do not copy a space after some separators */
499  source++;
500  }
501  else {
502  /* Normal copy */
503  *++destination = *source++;
504  }
505  }
506  else {
507  /* Normal copy */
508  *++destination = *source++;
509  }
510  }
511 
512  /* Get rid of a trailing SPACE. */
513  if(*destination==' ')
514  *(destination) = '\000';
515  else
516  *(destination+1) = '\000';
517 
518  pips_debug(8, "End with signature \"%s\"\n", new_s);
519 
521  return new_s;
522  }
523 
525  {
527  if(imbalance<0) {
528  /* pips_internal_error("More signatures freed than allocated: %d\n", imbalance); */
529  pips_debug(5, "More signatures freed than allocated: %d\n", imbalance);
530  }
531  return imbalance;
532  }
533 ␌
534 /* Beware of the free: no constant strings in signature! */
535 static string new_empty()
536  {
537  return new_signature("");
538  }
539 static string new_comma()
540  {
541  return new_signature(",");
542  }
543 static string new_eq()
544  {
545  return new_signature("=");
546  }
547 static string new_star()
548  {
549  return new_signature("*");
550  }
551 static string new_semicolon()
552  {
553  return new_signature(";");
554  }
555 static string new_colon()
556  {
557  return new_signature(":");
558  }
559 
560 static string new_lbrace()
561  {
562  return new_signature("{");
563  }
564 static string new_rbrace()
565  {
566  return new_signature("}");
567  }
568 static string new_lparen()
569  {
570  return new_signature("(");
571  }
572 static string new_rparen()
573  {
574  return new_signature(")");
575  }
576 static string new_lbracket()
577  {
578  return new_signature("[");
579  }
580 static string new_rbracket()
581  {
582  return new_signature("]");
583  }
584 static string new_ellipsis()
585  {
586  return new_signature("...");
587  }
588 
589 #line 590 "y.tab.c"
590 
591 # ifndef YY_CAST
592 # ifdef __cplusplus
593 # define YY_CAST(Type, Val) static_cast<Type> (Val)
594 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
595 # else
596 # define YY_CAST(Type, Val) ((Type) (Val))
597 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
598 # endif
599 # endif
600 # ifndef YY_NULLPTR
601 # if defined __cplusplus
602 # if 201103L <= __cplusplus
603 # define YY_NULLPTR nullptr
604 # else
605 # define YY_NULLPTR 0
606 # endif
607 # else
608 # define YY_NULLPTR ((void*)0)
609 # endif
610 # endif
611 
612 /* Use api.header.include to #include this header
613  instead of duplicating it here. */
614 #ifndef YY_SPLITC_Y_TAB_H_INCLUDED
615 # define YY_SPLITC_Y_TAB_H_INCLUDED
616 /* Debug traces. */
617 #ifndef YYDEBUG
618 # define YYDEBUG 0
619 #endif
620 #if YYDEBUG
621 extern int splitc_debug;
622 #endif
623 
624 /* Token kinds. */
625 #ifndef YYTOKENTYPE
626 # define YYTOKENTYPE
628  {
629  YYEMPTY = -2,
630  YYEOF = 0, /* "end of file" */
631  YYerror = 256, /* error */
632  YYUNDEF = 257, /* "invalid token" */
633  TK_IDENT = 258, /* TK_IDENT */
634  TK_CHARCON = 259, /* TK_CHARCON */
635  TK_INTCON = 260, /* TK_INTCON */
636  TK_FLOATCON = 261, /* TK_FLOATCON */
637  TK_NAMED_TYPE = 262, /* TK_NAMED_TYPE */
638  TK_STRINGCON = 263, /* TK_STRINGCON */
639  TK_WSTRINGCON = 264, /* TK_WSTRINGCON */
640  TK_EOF = 265, /* TK_EOF */
641  TK_CHAR = 266, /* TK_CHAR */
642  TK_INT = 267, /* TK_INT */
643  TK_INT128 = 268, /* TK_INT128 */
644  TK_UINT128 = 269, /* TK_UINT128 */
645  TK_DOUBLE = 270, /* TK_DOUBLE */
646  TK_FLOAT = 271, /* TK_FLOAT */
647  TK_VOID = 272, /* TK_VOID */
648  TK_COMPLEX = 273, /* TK_COMPLEX */
649  TK_ENUM = 274, /* TK_ENUM */
650  TK_STRUCT = 275, /* TK_STRUCT */
651  TK_TYPEDEF = 276, /* TK_TYPEDEF */
652  TK_UNION = 277, /* TK_UNION */
653  TK_SIGNED = 278, /* TK_SIGNED */
654  TK_UNSIGNED = 279, /* TK_UNSIGNED */
655  TK_LONG = 280, /* TK_LONG */
656  TK_SHORT = 281, /* TK_SHORT */
657  TK_VOLATILE = 282, /* TK_VOLATILE */
658  TK_EXTERN = 283, /* TK_EXTERN */
659  TK_STATIC = 284, /* TK_STATIC */
660  TK_CONST = 285, /* TK_CONST */
661  TK_RESTRICT = 286, /* TK_RESTRICT */
662  TK_AUTO = 287, /* TK_AUTO */
663  TK_REGISTER = 288, /* TK_REGISTER */
664  TK_THREAD = 289, /* TK_THREAD */
665  TK_STATIC_DIMENSION = 290, /* TK_STATIC_DIMENSION */
666  TK_SIZEOF = 291, /* TK_SIZEOF */
667  TK_ALIGNOF = 292, /* TK_ALIGNOF */
668  TK_EQ = 293, /* TK_EQ */
669  TK_PLUS_EQ = 294, /* TK_PLUS_EQ */
670  TK_MINUS_EQ = 295, /* TK_MINUS_EQ */
671  TK_STAR_EQ = 296, /* TK_STAR_EQ */
672  TK_SLASH_EQ = 297, /* TK_SLASH_EQ */
673  TK_PERCENT_EQ = 298, /* TK_PERCENT_EQ */
674  TK_AND_EQ = 299, /* TK_AND_EQ */
675  TK_PIPE_EQ = 300, /* TK_PIPE_EQ */
676  TK_CIRC_EQ = 301, /* TK_CIRC_EQ */
677  TK_INF_INF_EQ = 302, /* TK_INF_INF_EQ */
678  TK_SUP_SUP_EQ = 303, /* TK_SUP_SUP_EQ */
679  TK_ARROW = 304, /* TK_ARROW */
680  TK_DOT = 305, /* TK_DOT */
681  TK_EQ_EQ = 306, /* TK_EQ_EQ */
682  TK_EXCLAM_EQ = 307, /* TK_EXCLAM_EQ */
683  TK_INF = 308, /* TK_INF */
684  TK_SUP = 309, /* TK_SUP */
685  TK_INF_EQ = 310, /* TK_INF_EQ */
686  TK_SUP_EQ = 311, /* TK_SUP_EQ */
687  TK_PLUS = 312, /* TK_PLUS */
688  TK_MINUS = 313, /* TK_MINUS */
689  TK_STAR = 314, /* TK_STAR */
690  TK_SLASH = 315, /* TK_SLASH */
691  TK_PERCENT = 316, /* TK_PERCENT */
692  TK_TILDE = 317, /* TK_TILDE */
693  TK_AND = 318, /* TK_AND */
694  TK_PIPE = 319, /* TK_PIPE */
695  TK_CIRC = 320, /* TK_CIRC */
696  TK_EXCLAM = 321, /* TK_EXCLAM */
697  TK_AND_AND = 322, /* TK_AND_AND */
698  TK_PIPE_PIPE = 323, /* TK_PIPE_PIPE */
699  TK_INF_INF = 324, /* TK_INF_INF */
700  TK_SUP_SUP = 325, /* TK_SUP_SUP */
701  TK_PLUS_PLUS = 326, /* TK_PLUS_PLUS */
702  TK_MINUS_MINUS = 327, /* TK_MINUS_MINUS */
703  TK_RPAREN = 328, /* TK_RPAREN */
704  TK_LPAREN = 329, /* TK_LPAREN */
705  TK_RBRACE = 330, /* TK_RBRACE */
706  TK_LBRACE = 331, /* TK_LBRACE */
707  TK_LBRACKET = 332, /* TK_LBRACKET */
708  TK_RBRACKET = 333, /* TK_RBRACKET */
709  TK_COLON = 334, /* TK_COLON */
710  TK_SEMICOLON = 335, /* TK_SEMICOLON */
711  TK_COMMA = 336, /* TK_COMMA */
712  TK_ELLIPSIS = 337, /* TK_ELLIPSIS */
713  TK_QUEST = 338, /* TK_QUEST */
714  TK_BREAK = 339, /* TK_BREAK */
715  TK_CONTINUE = 340, /* TK_CONTINUE */
716  TK_GOTO = 341, /* TK_GOTO */
717  TK_RETURN = 342, /* TK_RETURN */
718  TK_SWITCH = 343, /* TK_SWITCH */
719  TK_CASE = 344, /* TK_CASE */
720  TK_DEFAULT = 345, /* TK_DEFAULT */
721  TK_WHILE = 346, /* TK_WHILE */
722  TK_DO = 347, /* TK_DO */
723  TK_FOR = 348, /* TK_FOR */
724  TK_IF = 349, /* TK_IF */
725  TK_ELSE = 350, /* TK_ELSE */
726  TK_ATTRIBUTE = 351, /* TK_ATTRIBUTE */
727  TK_INLINE = 352, /* TK_INLINE */
728  TK_ASM = 353, /* TK_ASM */
729  TK_TYPEOF = 354, /* TK_TYPEOF */
730  TK_FUNCTION__ = 355, /* TK_FUNCTION__ */
731  TK_PRETTY_FUNCTION__ = 356, /* TK_PRETTY_FUNCTION__ */
732  TK_LABEL__ = 357, /* TK_LABEL__ */
733  TK_BUILTIN_VA_ARG = 358, /* TK_BUILTIN_VA_ARG */
734  TK_BUILTIN_VA_LIST = 359, /* TK_BUILTIN_VA_LIST */
735  TK_BLOCKATTRIBUTE = 360, /* TK_BLOCKATTRIBUTE */
736  TK_DECLSPEC = 361, /* TK_DECLSPEC */
737  TK_MSASM = 362, /* TK_MSASM */
738  TK_MSATTR = 363, /* TK_MSATTR */
739  TK_PRAGMA = 364, /* TK_PRAGMA */
740  TK_AT_TRANSFORM = 365, /* TK_AT_TRANSFORM */
741  TK_AT_TRANSFORMEXPR = 366, /* TK_AT_TRANSFORMEXPR */
742  TK_AT_SPECIFIER = 367, /* TK_AT_SPECIFIER */
743  TK_AT_EXPR = 368, /* TK_AT_EXPR */
744  TK_AT_NAME = 369, /* TK_AT_NAME */
745  TK_COMPLEXCON = 370, /* TK_COMPLEXCON */
746  TK_CAST = 371, /* TK_CAST */
747  TK_ADDROF = 372 /* TK_ADDROF */
748  };
749  typedef enum yytokentype yytoken_kind_t;
750 #endif
751 /* Token kinds. */
752 #define YYEMPTY -2
753 #define YYEOF 0
754 #define YYerror 256
755 #define YYUNDEF 257
756 #define TK_IDENT 258
757 #define TK_CHARCON 259
758 #define TK_INTCON 260
759 #define TK_FLOATCON 261
760 #define TK_NAMED_TYPE 262
761 #define TK_STRINGCON 263
762 #define TK_WSTRINGCON 264
763 #define TK_EOF 265
764 #define TK_CHAR 266
765 #define TK_INT 267
766 #define TK_INT128 268
767 #define TK_UINT128 269
768 #define TK_DOUBLE 270
769 #define TK_FLOAT 271
770 #define TK_VOID 272
771 #define TK_COMPLEX 273
772 #define TK_ENUM 274
773 #define TK_STRUCT 275
774 #define TK_TYPEDEF 276
775 #define TK_UNION 277
776 #define TK_SIGNED 278
777 #define TK_UNSIGNED 279
778 #define TK_LONG 280
779 #define TK_SHORT 281
780 #define TK_VOLATILE 282
781 #define TK_EXTERN 283
782 #define TK_STATIC 284
783 #define TK_CONST 285
784 #define TK_RESTRICT 286
785 #define TK_AUTO 287
786 #define TK_REGISTER 288
787 #define TK_THREAD 289
788 #define TK_STATIC_DIMENSION 290
789 #define TK_SIZEOF 291
790 #define TK_ALIGNOF 292
791 #define TK_EQ 293
792 #define TK_PLUS_EQ 294
793 #define TK_MINUS_EQ 295
794 #define TK_STAR_EQ 296
795 #define TK_SLASH_EQ 297
796 #define TK_PERCENT_EQ 298
797 #define TK_AND_EQ 299
798 #define TK_PIPE_EQ 300
799 #define TK_CIRC_EQ 301
800 #define TK_INF_INF_EQ 302
801 #define TK_SUP_SUP_EQ 303
802 #define TK_ARROW 304
803 #define TK_DOT 305
804 #define TK_EQ_EQ 306
805 #define TK_EXCLAM_EQ 307
806 #define TK_INF 308
807 #define TK_SUP 309
808 #define TK_INF_EQ 310
809 #define TK_SUP_EQ 311
810 #define TK_PLUS 312
811 #define TK_MINUS 313
812 #define TK_STAR 314
813 #define TK_SLASH 315
814 #define TK_PERCENT 316
815 #define TK_TILDE 317
816 #define TK_AND 318
817 #define TK_PIPE 319
818 #define TK_CIRC 320
819 #define TK_EXCLAM 321
820 #define TK_AND_AND 322
821 #define TK_PIPE_PIPE 323
822 #define TK_INF_INF 324
823 #define TK_SUP_SUP 325
824 #define TK_PLUS_PLUS 326
825 #define TK_MINUS_MINUS 327
826 #define TK_RPAREN 328
827 #define TK_LPAREN 329
828 #define TK_RBRACE 330
829 #define TK_LBRACE 331
830 #define TK_LBRACKET 332
831 #define TK_RBRACKET 333
832 #define TK_COLON 334
833 #define TK_SEMICOLON 335
834 #define TK_COMMA 336
835 #define TK_ELLIPSIS 337
836 #define TK_QUEST 338
837 #define TK_BREAK 339
838 #define TK_CONTINUE 340
839 #define TK_GOTO 341
840 #define TK_RETURN 342
841 #define TK_SWITCH 343
842 #define TK_CASE 344
843 #define TK_DEFAULT 345
844 #define TK_WHILE 346
845 #define TK_DO 347
846 #define TK_FOR 348
847 #define TK_IF 349
848 #define TK_ELSE 350
849 #define TK_ATTRIBUTE 351
850 #define TK_INLINE 352
851 #define TK_ASM 353
852 #define TK_TYPEOF 354
853 #define TK_FUNCTION__ 355
854 #define TK_PRETTY_FUNCTION__ 356
855 #define TK_LABEL__ 357
856 #define TK_BUILTIN_VA_ARG 358
857 #define TK_BUILTIN_VA_LIST 359
858 #define TK_BLOCKATTRIBUTE 360
859 #define TK_DECLSPEC 361
860 #define TK_MSASM 362
861 #define TK_MSATTR 363
862 #define TK_PRAGMA 364
863 #define TK_AT_TRANSFORM 365
864 #define TK_AT_TRANSFORMEXPR 366
865 #define TK_AT_SPECIFIER 367
866 #define TK_AT_EXPR 368
867 #define TK_AT_NAME 369
868 #define TK_COMPLEXCON 370
869 #define TK_CAST 371
870 #define TK_ADDROF 372
871 
872 /* Value type. */
873 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
874 union YYSTYPE
875 {
876 #line 566 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
877 
879  char character;
880  cons * liste;
882  entity entity;
885  int integer;
886  string string;
889  type type;
892 
893 #line 894 "y.tab.c"
894 
895 };
896 typedef union YYSTYPE YYSTYPE;
897 # define YYSTYPE_IS_TRIVIAL 1
898 # define YYSTYPE_IS_DECLARED 1
899 #endif
900 
901 
902 extern YYSTYPE splitc_lval;
903 
904 
905 int splitc_parse (void);
906 
907 
908 #endif /* !YY_SPLITC_Y_TAB_H_INCLUDED */
909 /* Symbol kind. */
911 {
913  YYSYMBOL_YYEOF = 0, /* "end of file" */
914  YYSYMBOL_YYerror = 1, /* error */
915  YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
916  YYSYMBOL_TK_IDENT = 3, /* TK_IDENT */
917  YYSYMBOL_TK_CHARCON = 4, /* TK_CHARCON */
918  YYSYMBOL_TK_INTCON = 5, /* TK_INTCON */
919  YYSYMBOL_TK_FLOATCON = 6, /* TK_FLOATCON */
920  YYSYMBOL_TK_NAMED_TYPE = 7, /* TK_NAMED_TYPE */
921  YYSYMBOL_TK_STRINGCON = 8, /* TK_STRINGCON */
922  YYSYMBOL_TK_WSTRINGCON = 9, /* TK_WSTRINGCON */
923  YYSYMBOL_TK_EOF = 10, /* TK_EOF */
924  YYSYMBOL_TK_CHAR = 11, /* TK_CHAR */
925  YYSYMBOL_TK_INT = 12, /* TK_INT */
926  YYSYMBOL_TK_INT128 = 13, /* TK_INT128 */
927  YYSYMBOL_TK_UINT128 = 14, /* TK_UINT128 */
928  YYSYMBOL_TK_DOUBLE = 15, /* TK_DOUBLE */
929  YYSYMBOL_TK_FLOAT = 16, /* TK_FLOAT */
930  YYSYMBOL_TK_VOID = 17, /* TK_VOID */
931  YYSYMBOL_TK_COMPLEX = 18, /* TK_COMPLEX */
932  YYSYMBOL_TK_ENUM = 19, /* TK_ENUM */
933  YYSYMBOL_TK_STRUCT = 20, /* TK_STRUCT */
934  YYSYMBOL_TK_TYPEDEF = 21, /* TK_TYPEDEF */
935  YYSYMBOL_TK_UNION = 22, /* TK_UNION */
936  YYSYMBOL_TK_SIGNED = 23, /* TK_SIGNED */
937  YYSYMBOL_TK_UNSIGNED = 24, /* TK_UNSIGNED */
938  YYSYMBOL_TK_LONG = 25, /* TK_LONG */
939  YYSYMBOL_TK_SHORT = 26, /* TK_SHORT */
940  YYSYMBOL_TK_VOLATILE = 27, /* TK_VOLATILE */
941  YYSYMBOL_TK_EXTERN = 28, /* TK_EXTERN */
942  YYSYMBOL_TK_STATIC = 29, /* TK_STATIC */
943  YYSYMBOL_TK_CONST = 30, /* TK_CONST */
944  YYSYMBOL_TK_RESTRICT = 31, /* TK_RESTRICT */
945  YYSYMBOL_TK_AUTO = 32, /* TK_AUTO */
946  YYSYMBOL_TK_REGISTER = 33, /* TK_REGISTER */
947  YYSYMBOL_TK_THREAD = 34, /* TK_THREAD */
948  YYSYMBOL_TK_STATIC_DIMENSION = 35, /* TK_STATIC_DIMENSION */
949  YYSYMBOL_TK_SIZEOF = 36, /* TK_SIZEOF */
950  YYSYMBOL_TK_ALIGNOF = 37, /* TK_ALIGNOF */
951  YYSYMBOL_TK_EQ = 38, /* TK_EQ */
952  YYSYMBOL_TK_PLUS_EQ = 39, /* TK_PLUS_EQ */
953  YYSYMBOL_TK_MINUS_EQ = 40, /* TK_MINUS_EQ */
954  YYSYMBOL_TK_STAR_EQ = 41, /* TK_STAR_EQ */
955  YYSYMBOL_TK_SLASH_EQ = 42, /* TK_SLASH_EQ */
956  YYSYMBOL_TK_PERCENT_EQ = 43, /* TK_PERCENT_EQ */
957  YYSYMBOL_TK_AND_EQ = 44, /* TK_AND_EQ */
958  YYSYMBOL_TK_PIPE_EQ = 45, /* TK_PIPE_EQ */
959  YYSYMBOL_TK_CIRC_EQ = 46, /* TK_CIRC_EQ */
960  YYSYMBOL_TK_INF_INF_EQ = 47, /* TK_INF_INF_EQ */
961  YYSYMBOL_TK_SUP_SUP_EQ = 48, /* TK_SUP_SUP_EQ */
962  YYSYMBOL_TK_ARROW = 49, /* TK_ARROW */
963  YYSYMBOL_TK_DOT = 50, /* TK_DOT */
964  YYSYMBOL_TK_EQ_EQ = 51, /* TK_EQ_EQ */
965  YYSYMBOL_TK_EXCLAM_EQ = 52, /* TK_EXCLAM_EQ */
966  YYSYMBOL_TK_INF = 53, /* TK_INF */
967  YYSYMBOL_TK_SUP = 54, /* TK_SUP */
968  YYSYMBOL_TK_INF_EQ = 55, /* TK_INF_EQ */
969  YYSYMBOL_TK_SUP_EQ = 56, /* TK_SUP_EQ */
970  YYSYMBOL_TK_PLUS = 57, /* TK_PLUS */
971  YYSYMBOL_TK_MINUS = 58, /* TK_MINUS */
972  YYSYMBOL_TK_STAR = 59, /* TK_STAR */
973  YYSYMBOL_TK_SLASH = 60, /* TK_SLASH */
974  YYSYMBOL_TK_PERCENT = 61, /* TK_PERCENT */
975  YYSYMBOL_TK_TILDE = 62, /* TK_TILDE */
976  YYSYMBOL_TK_AND = 63, /* TK_AND */
977  YYSYMBOL_TK_PIPE = 64, /* TK_PIPE */
978  YYSYMBOL_TK_CIRC = 65, /* TK_CIRC */
979  YYSYMBOL_TK_EXCLAM = 66, /* TK_EXCLAM */
980  YYSYMBOL_TK_AND_AND = 67, /* TK_AND_AND */
981  YYSYMBOL_TK_PIPE_PIPE = 68, /* TK_PIPE_PIPE */
982  YYSYMBOL_TK_INF_INF = 69, /* TK_INF_INF */
983  YYSYMBOL_TK_SUP_SUP = 70, /* TK_SUP_SUP */
984  YYSYMBOL_TK_PLUS_PLUS = 71, /* TK_PLUS_PLUS */
985  YYSYMBOL_TK_MINUS_MINUS = 72, /* TK_MINUS_MINUS */
986  YYSYMBOL_TK_RPAREN = 73, /* TK_RPAREN */
987  YYSYMBOL_TK_LPAREN = 74, /* TK_LPAREN */
988  YYSYMBOL_TK_RBRACE = 75, /* TK_RBRACE */
989  YYSYMBOL_TK_LBRACE = 76, /* TK_LBRACE */
990  YYSYMBOL_TK_LBRACKET = 77, /* TK_LBRACKET */
991  YYSYMBOL_TK_RBRACKET = 78, /* TK_RBRACKET */
992  YYSYMBOL_TK_COLON = 79, /* TK_COLON */
993  YYSYMBOL_TK_SEMICOLON = 80, /* TK_SEMICOLON */
994  YYSYMBOL_TK_COMMA = 81, /* TK_COMMA */
995  YYSYMBOL_TK_ELLIPSIS = 82, /* TK_ELLIPSIS */
996  YYSYMBOL_TK_QUEST = 83, /* TK_QUEST */
997  YYSYMBOL_TK_BREAK = 84, /* TK_BREAK */
998  YYSYMBOL_TK_CONTINUE = 85, /* TK_CONTINUE */
999  YYSYMBOL_TK_GOTO = 86, /* TK_GOTO */
1000  YYSYMBOL_TK_RETURN = 87, /* TK_RETURN */
1001  YYSYMBOL_TK_SWITCH = 88, /* TK_SWITCH */
1002  YYSYMBOL_TK_CASE = 89, /* TK_CASE */
1003  YYSYMBOL_TK_DEFAULT = 90, /* TK_DEFAULT */
1004  YYSYMBOL_TK_WHILE = 91, /* TK_WHILE */
1005  YYSYMBOL_TK_DO = 92, /* TK_DO */
1006  YYSYMBOL_TK_FOR = 93, /* TK_FOR */
1007  YYSYMBOL_TK_IF = 94, /* TK_IF */
1008  YYSYMBOL_TK_ELSE = 95, /* TK_ELSE */
1009  YYSYMBOL_TK_ATTRIBUTE = 96, /* TK_ATTRIBUTE */
1010  YYSYMBOL_TK_INLINE = 97, /* TK_INLINE */
1011  YYSYMBOL_TK_ASM = 98, /* TK_ASM */
1012  YYSYMBOL_TK_TYPEOF = 99, /* TK_TYPEOF */
1013  YYSYMBOL_TK_FUNCTION__ = 100, /* TK_FUNCTION__ */
1014  YYSYMBOL_TK_PRETTY_FUNCTION__ = 101, /* TK_PRETTY_FUNCTION__ */
1015  YYSYMBOL_TK_LABEL__ = 102, /* TK_LABEL__ */
1016  YYSYMBOL_TK_BUILTIN_VA_ARG = 103, /* TK_BUILTIN_VA_ARG */
1017  YYSYMBOL_TK_BUILTIN_VA_LIST = 104, /* TK_BUILTIN_VA_LIST */
1018  YYSYMBOL_TK_BLOCKATTRIBUTE = 105, /* TK_BLOCKATTRIBUTE */
1019  YYSYMBOL_TK_DECLSPEC = 106, /* TK_DECLSPEC */
1020  YYSYMBOL_TK_MSASM = 107, /* TK_MSASM */
1021  YYSYMBOL_TK_MSATTR = 108, /* TK_MSATTR */
1022  YYSYMBOL_TK_PRAGMA = 109, /* TK_PRAGMA */
1023  YYSYMBOL_TK_AT_TRANSFORM = 110, /* TK_AT_TRANSFORM */
1024  YYSYMBOL_TK_AT_TRANSFORMEXPR = 111, /* TK_AT_TRANSFORMEXPR */
1025  YYSYMBOL_TK_AT_SPECIFIER = 112, /* TK_AT_SPECIFIER */
1026  YYSYMBOL_TK_AT_EXPR = 113, /* TK_AT_EXPR */
1027  YYSYMBOL_TK_AT_NAME = 114, /* TK_AT_NAME */
1028  YYSYMBOL_TK_COMPLEXCON = 115, /* TK_COMPLEXCON */
1029  YYSYMBOL_TK_CAST = 116, /* TK_CAST */
1030  YYSYMBOL_TK_ADDROF = 117, /* TK_ADDROF */
1031  YYSYMBOL_YYACCEPT = 118, /* $accept */
1032  YYSYMBOL_interpret = 119, /* interpret */
1033  YYSYMBOL_file = 120, /* file */
1034  YYSYMBOL_globals = 121, /* globals */
1035  YYSYMBOL_location = 122, /* location */
1036  YYSYMBOL_global = 123, /* global */
1037  YYSYMBOL_id_or_typename = 124, /* id_or_typename */
1038  YYSYMBOL_maybecomma = 125, /* maybecomma */
1039  YYSYMBOL_expression = 126, /* expression */
1040  YYSYMBOL_constant = 127, /* constant */
1041  YYSYMBOL_string_constant = 128, /* string_constant */
1042  YYSYMBOL_one_string_constant = 129, /* one_string_constant */
1043  YYSYMBOL_string_list = 130, /* string_list */
1044  YYSYMBOL_wstring_list = 131, /* wstring_list */
1045  YYSYMBOL_one_string = 132, /* one_string */
1046  YYSYMBOL_init_expression = 133, /* init_expression */
1047  YYSYMBOL_initializer_list = 134, /* initializer_list */
1048  YYSYMBOL_initializer_list_opt = 135, /* initializer_list_opt */
1049  YYSYMBOL_initializer = 136, /* initializer */
1050  YYSYMBOL_eq_opt = 137, /* eq_opt */
1051  YYSYMBOL_init_designators = 138, /* init_designators */
1052  YYSYMBOL_init_designators_opt = 139, /* init_designators_opt */
1053  YYSYMBOL_gcc_init_designators = 140, /* gcc_init_designators */
1054  YYSYMBOL_arguments = 141, /* arguments */
1055  YYSYMBOL_opt_expression = 142, /* opt_expression */
1056  YYSYMBOL_comma_expression = 143, /* comma_expression */
1057  YYSYMBOL_comma_expression_opt = 144, /* comma_expression_opt */
1058  YYSYMBOL_paren_comma_expression = 145, /* paren_comma_expression */
1059  YYSYMBOL_bracket_comma_expression = 146, /* bracket_comma_expression */
1060  YYSYMBOL_block = 147, /* block */
1061  YYSYMBOL_148_1 = 148, /* $@1 */
1062  YYSYMBOL_149_2 = 149, /* $@2 */
1063  YYSYMBOL_block_attrs = 150, /* block_attrs */
1064  YYSYMBOL_declaration_list = 151, /* declaration_list */
1065  YYSYMBOL_statement_list = 152, /* statement_list */
1066  YYSYMBOL_local_labels = 153, /* local_labels */
1067  YYSYMBOL_local_label_names = 154, /* local_label_names */
1068  YYSYMBOL_statement = 155, /* statement */
1069  YYSYMBOL_156_3 = 156, /* $@3 */
1070  YYSYMBOL_157_4 = 157, /* $@4 */
1071  YYSYMBOL_158_5 = 158, /* $@5 */
1072  YYSYMBOL_159_6 = 159, /* $@6 */
1073  YYSYMBOL_160_7 = 160, /* $@7 */
1074  YYSYMBOL_for_clause = 161, /* for_clause */
1075  YYSYMBOL_declaration = 162, /* declaration */
1076  YYSYMBOL_init_declarator_list = 163, /* init_declarator_list */
1077  YYSYMBOL_init_declarator = 164, /* init_declarator */
1078  YYSYMBOL_decl_spec_list = 165, /* decl_spec_list */
1079  YYSYMBOL_decl_spec_list_opt = 166, /* decl_spec_list_opt */
1080  YYSYMBOL_decl_spec_list_opt_no_named = 167, /* decl_spec_list_opt_no_named */
1081  YYSYMBOL_168_8 = 168, /* @8 */
1082  YYSYMBOL_type_spec = 169, /* type_spec */
1083  YYSYMBOL_struct_decl_list = 170, /* struct_decl_list */
1084  YYSYMBOL_field_decl_list = 171, /* field_decl_list */
1085  YYSYMBOL_field_decl = 172, /* field_decl */
1086  YYSYMBOL_enum_list = 173, /* enum_list */
1087  YYSYMBOL_enumerator = 174, /* enumerator */
1088  YYSYMBOL_declarator = 175, /* declarator */
1089  YYSYMBOL_direct_decl = 176, /* direct_decl */
1090  YYSYMBOL_parameter_list_startscope = 177, /* parameter_list_startscope */
1091  YYSYMBOL_rest_par_list = 178, /* rest_par_list */
1092  YYSYMBOL_rest_par_list1 = 179, /* rest_par_list1 */
1093  YYSYMBOL_parameter_decl = 180, /* parameter_decl */
1094  YYSYMBOL_old_proto_decl = 181, /* old_proto_decl */
1095  YYSYMBOL_direct_old_proto_decl = 182, /* direct_old_proto_decl */
1096  YYSYMBOL_old_parameter_list_ne = 183, /* old_parameter_list_ne */
1097  YYSYMBOL_old_pardef_list = 184, /* old_pardef_list */
1098  YYSYMBOL_old_pardef = 185, /* old_pardef */
1099  YYSYMBOL_pointer = 186, /* pointer */
1100  YYSYMBOL_pointer_opt = 187, /* pointer_opt */
1101  YYSYMBOL_type_name = 188, /* type_name */
1102  YYSYMBOL_abstract_decl = 189, /* abstract_decl */
1103  YYSYMBOL_abs_direct_decl = 190, /* abs_direct_decl */
1104  YYSYMBOL_abs_direct_decl_opt = 191, /* abs_direct_decl_opt */
1105  YYSYMBOL_function_def = 192, /* function_def */
1106  YYSYMBOL_function_def_start = 193, /* function_def_start */
1107  YYSYMBOL_attributes = 194, /* attributes */
1108  YYSYMBOL_attributes_with_asm = 195, /* attributes_with_asm */
1109  YYSYMBOL_attribute = 196, /* attribute */
1110  YYSYMBOL_attr = 197, /* attr */
1111  YYSYMBOL_attr_list_ne = 198, /* attr_list_ne */
1112  YYSYMBOL_paren_attr_list_ne = 199, /* paren_attr_list_ne */
1113  YYSYMBOL_asmattr = 200, /* asmattr */
1114  YYSYMBOL_asmtemplate = 201, /* asmtemplate */
1115  YYSYMBOL_asmoutputs = 202, /* asmoutputs */
1116  YYSYMBOL_asmoperands = 203, /* asmoperands */
1117  YYSYMBOL_asmoperandsne = 204, /* asmoperandsne */
1118  YYSYMBOL_asmoperand = 205, /* asmoperand */
1119  YYSYMBOL_asminputs = 206, /* asminputs */
1120  YYSYMBOL_asmclobber = 207, /* asmclobber */
1121  YYSYMBOL_asmcloberlst_ne = 208 /* asmcloberlst_ne */
1122 };
1123 typedef enum yysymbol_kind_t yysymbol_kind_t;
1124 
1125 
1126 
1127 
1128 #ifdef short
1129 # undef short
1130 #endif
1131 
1132 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
1133  <limits.h> and (if available) <stdint.h> are included
1134  so that the code can choose integer types of a good width. */
1135 
1136 #ifndef __PTRDIFF_MAX__
1137 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
1138 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1139 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
1140 # define YY_STDINT_H
1141 # endif
1142 #endif
1143 
1144 /* Narrow types that promote to a signed type and that can represent a
1145  signed or unsigned integer of at least N bits. In tables they can
1146  save space and decrease cache pressure. Promoting to a signed type
1147  helps avoid bugs in integer arithmetic. */
1148 
1149 #ifdef __INT_LEAST8_MAX__
1150 typedef __INT_LEAST8_TYPE__ yytype_int8;
1151 #elif defined YY_STDINT_H
1152 typedef int_least8_t yytype_int8;
1153 #else
1154 typedef signed char yytype_int8;
1155 #endif
1156 
1157 #ifdef __INT_LEAST16_MAX__
1158 typedef __INT_LEAST16_TYPE__ yytype_int16;
1159 #elif defined YY_STDINT_H
1160 typedef int_least16_t yytype_int16;
1161 #else
1162 typedef short yytype_int16;
1163 #endif
1164 
1165 /* Work around bug in HP-UX 11.23, which defines these macros
1166  incorrectly for preprocessor constants. This workaround can likely
1167  be removed in 2023, as HPE has promised support for HP-UX 11.23
1168  (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
1169  <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
1170 #ifdef __hpux
1171 # undef UINT_LEAST8_MAX
1172 # undef UINT_LEAST16_MAX
1173 # define UINT_LEAST8_MAX 255
1174 # define UINT_LEAST16_MAX 65535
1175 #endif
1176 
1177 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1178 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
1179 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1180  && UINT_LEAST8_MAX <= INT_MAX)
1181 typedef uint_least8_t yytype_uint8;
1182 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1183 typedef unsigned char yytype_uint8;
1184 #else
1185 typedef short yytype_uint8;
1186 #endif
1187 
1188 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1189 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
1190 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1191  && UINT_LEAST16_MAX <= INT_MAX)
1193 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1194 typedef unsigned short yytype_uint16;
1195 #else
1196 typedef int yytype_uint16;
1197 #endif
1198 
1199 #ifndef YYPTRDIFF_T
1200 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1201 # define YYPTRDIFF_T __PTRDIFF_TYPE__
1202 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1203 # elif defined PTRDIFF_MAX
1204 # ifndef ptrdiff_t
1205 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1206 # endif
1207 # define YYPTRDIFF_T ptrdiff_t
1208 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1209 # else
1210 # define YYPTRDIFF_T long
1211 # define YYPTRDIFF_MAXIMUM LONG_MAX
1212 # endif
1213 #endif
1214 
1215 #ifndef YYSIZE_T
1216 # ifdef __SIZE_TYPE__
1217 # define YYSIZE_T __SIZE_TYPE__
1218 # elif defined size_t
1219 # define YYSIZE_T size_t
1220 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1221 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1222 # define YYSIZE_T size_t
1223 # else
1224 # define YYSIZE_T unsigned
1225 # endif
1226 #endif
1227 
1228 #define YYSIZE_MAXIMUM \
1229  YY_CAST (YYPTRDIFF_T, \
1230  (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1231  ? YYPTRDIFF_MAXIMUM \
1232  : YY_CAST (YYSIZE_T, -1)))
1233 
1234 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1235 
1236 
1237 /* Stored state numbers (used for stacks). */
1239 
1240 /* State numbers in computations. */
1241 typedef int yy_state_fast_t;
1242 
1243 #ifndef YY_
1244 # if defined YYENABLE_NLS && YYENABLE_NLS
1245 # if ENABLE_NLS
1246 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1247 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1248 # endif
1249 # endif
1250 # ifndef YY_
1251 # define YY_(Msgid) Msgid
1252 # endif
1253 #endif
1254 
1255 
1256 #ifndef YY_ATTRIBUTE_PURE
1257 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1258 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1259 # else
1260 # define YY_ATTRIBUTE_PURE
1261 # endif
1262 #endif
1263 
1264 #ifndef YY_ATTRIBUTE_UNUSED
1265 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1266 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1267 # else
1268 # define YY_ATTRIBUTE_UNUSED
1269 # endif
1270 #endif
1271 
1272 /* Suppress unused-variable warnings by "using" E. */
1273 #if ! defined lint || defined __GNUC__
1274 # define YY_USE(E) ((void) (E))
1275 #else
1276 # define YY_USE(E) /* empty */
1277 #endif
1278 
1279 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
1280 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1281 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1282 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1283  _Pragma ("GCC diagnostic push") \
1284  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1285 # else
1286 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1287  _Pragma ("GCC diagnostic push") \
1288  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1289  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1290 # endif
1291 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1292  _Pragma ("GCC diagnostic pop")
1293 #else
1294 # define YY_INITIAL_VALUE(Value) Value
1295 #endif
1296 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1297 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1298 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1299 #endif
1300 #ifndef YY_INITIAL_VALUE
1301 # define YY_INITIAL_VALUE(Value) /* Nothing. */
1302 #endif
1303 
1304 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1305 # define YY_IGNORE_USELESS_CAST_BEGIN \
1306  _Pragma ("GCC diagnostic push") \
1307  _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1308 # define YY_IGNORE_USELESS_CAST_END \
1309  _Pragma ("GCC diagnostic pop")
1310 #endif
1311 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1312 # define YY_IGNORE_USELESS_CAST_BEGIN
1313 # define YY_IGNORE_USELESS_CAST_END
1314 #endif
1315 
1316 
1317 #define YY_ASSERT(E) ((void) (0 && (E)))
1318 
1319 #if !defined yyoverflow
1320 
1321 /* The parser invokes alloca or malloc; define the necessary symbols. */
1322 
1323 # ifdef YYSTACK_USE_ALLOCA
1324 # if YYSTACK_USE_ALLOCA
1325 # ifdef __GNUC__
1326 # define YYSTACK_ALLOC __builtin_alloca
1327 # elif defined __BUILTIN_VA_ARG_INCR
1328 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1329 # elif defined _AIX
1330 # define YYSTACK_ALLOC __alloca
1331 # elif defined _MSC_VER
1332 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1333 # define alloca _alloca
1334 # else
1335 # define YYSTACK_ALLOC alloca
1336 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1337 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1338  /* Use EXIT_SUCCESS as a witness for stdlib.h. */
1339 # ifndef EXIT_SUCCESS
1340 # define EXIT_SUCCESS 0
1341 # endif
1342 # endif
1343 # endif
1344 # endif
1345 # endif
1346 
1347 # ifdef YYSTACK_ALLOC
1348  /* Pacify GCC's 'empty if-body' warning. */
1349 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1350 # ifndef YYSTACK_ALLOC_MAXIMUM
1351  /* The OS might guarantee only one guard page at the bottom of the stack,
1352  and a page size can be as small as 4096 bytes. So we cannot safely
1353  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
1354  to allow for a few compiler-allocated temporary stack slots. */
1355 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1356 # endif
1357 # else
1358 # define YYSTACK_ALLOC YYMALLOC
1359 # define YYSTACK_FREE YYFREE
1360 # ifndef YYSTACK_ALLOC_MAXIMUM
1361 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1362 # endif
1363 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1364  && ! ((defined YYMALLOC || defined malloc) \
1365  && (defined YYFREE || defined free)))
1366 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1367 # ifndef EXIT_SUCCESS
1368 # define EXIT_SUCCESS 0
1369 # endif
1370 # endif
1371 # ifndef YYMALLOC
1372 # define YYMALLOC malloc
1373 # if ! defined malloc && ! defined EXIT_SUCCESS
1374 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1375 # endif
1376 # endif
1377 # ifndef YYFREE
1378 # define YYFREE free
1379 # if ! defined free && ! defined EXIT_SUCCESS
1380 void free (void *); /* INFRINGES ON USER NAME SPACE */
1381 # endif
1382 # endif
1383 # endif
1384 #endif /* !defined yyoverflow */
1385 
1386 #if (! defined yyoverflow \
1387  && (! defined __cplusplus \
1388  || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1389 
1390 /* A type that is properly aligned for any stack member. */
1391 union yyalloc
1392 {
1395 };
1396 
1397 /* The size of the maximum gap between one aligned stack and the next. */
1398 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1399 
1400 /* The size of an array large to enough to hold all stacks, each with
1401  N elements. */
1402 # define YYSTACK_BYTES(N) \
1403  ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1404  + YYSTACK_GAP_MAXIMUM)
1405 
1406 # define YYCOPY_NEEDED 1
1407 
1408 /* Relocate STACK from its old location to the new one. The
1409  local variables YYSIZE and YYSTACKSIZE give the old and new number of
1410  elements in the stack, and YYPTR gives the new location of the
1411  stack. Advance YYPTR to a properly aligned location for the next
1412  stack. */
1413 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1414  do \
1415  { \
1416  YYPTRDIFF_T yynewbytes; \
1417  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1418  Stack = &yyptr->Stack_alloc; \
1419  yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1420  yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1421  } \
1422  while (0)
1423 
1424 #endif
1425 
1426 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1427 /* Copy COUNT objects from SRC to DST. The source and destination do
1428  not overlap. */
1429 # ifndef YYCOPY
1430 # if defined __GNUC__ && 1 < __GNUC__
1431 # define YYCOPY(Dst, Src, Count) \
1432  __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1433 # else
1434 # define YYCOPY(Dst, Src, Count) \
1435  do \
1436  { \
1437  YYPTRDIFF_T yyi; \
1438  for (yyi = 0; yyi < (Count); yyi++) \
1439  (Dst)[yyi] = (Src)[yyi]; \
1440  } \
1441  while (0)
1442 # endif
1443 # endif
1444 #endif /* !YYCOPY_NEEDED */
1445 
1446 /* YYFINAL -- State number of the termination state. */
1447 #define YYFINAL 99
1448 /* YYLAST -- Last index in YYTABLE. */
1449 #define YYLAST 3937
1450 
1451 /* YYNTOKENS -- Number of terminals. */
1452 #define YYNTOKENS 118
1453 /* YYNNTS -- Number of nonterminals. */
1454 #define YYNNTS 91
1455 /* YYNRULES -- Number of rules. */
1456 #define YYNRULES 351
1457 /* YYNSTATES -- Number of states. */
1458 #define YYNSTATES 664
1459 
1460 /* YYMAXUTOK -- Last valid token kind. */
1461 #define YYMAXUTOK 372
1462 
1463 
1464 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1465  as returned by yylex, with out-of-bounds checking. */
1466 #define YYTRANSLATE(YYX) \
1467  (0 <= (YYX) && (YYX) <= YYMAXUTOK \
1468  ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
1469  : YYSYMBOL_YYUNDEF)
1470 
1471 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1472  as returned by yylex. */
1473 static const yytype_int8 yytranslate[] =
1474 {
1475  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1476  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1477  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1478  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1479  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1480  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1481  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1482  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1483  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1484  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1485  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1486  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1487  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1488  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1489  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1490  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1491  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1492  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1493  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1494  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1495  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1496  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1497  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1498  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1499  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1500  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1501  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1502  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1503  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1504  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1505  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1506  55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1507  65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1508  75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1509  85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1510  95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1511  105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1512  115, 116, 117
1513 };
1514 
1515 #if YYDEBUG
1516 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1517 static const yytype_int16 yyrline[] =
1518 {
1519  0, 742, 742, 744, 747, 748, 749, 753, 758, 773,
1520  796, 800, 807, 812, 817, 822, 826, 833, 837, 839,
1521  848, 849, 857, 861, 867, 873, 879, 884, 889, 893,
1522  897, 901, 905, 909, 913, 917, 921, 925, 929, 933,
1523  937, 942, 946, 952, 958, 964, 976, 980, 984, 988,
1524  992, 996, 1000, 1004, 1008, 1012, 1016, 1023, 1030, 1037,
1525  1044, 1051, 1058, 1065, 1072, 1078, 1084, 1090, 1096, 1102,
1526  1108, 1114, 1120, 1126, 1132, 1138, 1145, 1152, 1156, 1165,
1527  1169, 1173, 1177, 1181, 1187, 1196, 1202, 1206, 1209, 1215,
1528  1218, 1221, 1228, 1229, 1231, 1236, 1237, 1241, 1244, 1249,
1529  1250, 1253, 1256, 1259, 1262, 1266, 1270, 1272, 1274, 1278,
1530  1279, 1283, 1289, 1290, 1295, 1296, 1304, 1308, 1312, 1320,
1531  1321, 1325, 1330, 1338, 1342, 1349, 1349, 1349, 1354, 1359,
1532  1360, 1365, 1366, 1372, 1373, 1377, 1381, 1382, 1387, 1388,
1533  1392, 1395, 1399, 1400, 1404, 1409, 1412, 1408, 1419, 1418,
1534  1426, 1425, 1433, 1432, 1438, 1441, 1445, 1450, 1453, 1456,
1535  1460, 1463, 1466, 1469, 1473, 1475, 1477, 1479, 1485, 1488,
1536  1494, 1507, 1521, 1525, 1532, 1535, 1550, 1562, 1571, 1581,
1537  1590, 1599, 1609, 1637, 1646, 1657, 1670, 1671, 1679, 1679,
1538  1695, 1705, 1710, 1715, 1720, 1725, 1730, 1735, 1740, 1745,
1539  1750, 1755, 1760, 1765, 1786, 1799, 1806, 1814, 1823, 1829,
1540  1837, 1845, 1850, 1855, 1860, 1870, 1871, 1876, 1882, 1890,
1541  1894, 1901, 1902, 1906, 1913, 1917, 1921, 1929, 1935, 1944,
1542  1970, 1996, 2000, 2012, 2016, 2023, 2027, 2028, 2045, 2046,
1543  2050, 2057, 2062, 2084, 2089, 2098, 2104, 2116, 2123, 2127,
1544  2134, 2135, 2148, 2157, 2161, 2165, 2173, 2182, 2183, 2188,
1545  2193, 2201, 2206, 2216, 2220, 2225, 2230, 2237, 2241, 2245,
1546  2250, 2279, 2305, 2324, 2346, 2362, 2363, 2371, 2372, 2374,
1547  2389, 2394, 2398, 2403, 2407, 2411, 2415, 2424, 2425, 2427,
1548  2429, 2431, 2433, 2435, 2437, 2439, 2441, 2445, 2448, 2452,
1549  2454, 2458, 2460, 2462, 2465, 2467, 2469, 2471, 2473, 2475,
1550  2477, 2479, 2481, 2483, 2486, 2488, 2490, 2492, 2494, 2496,
1551  2498, 2500, 2502, 2504, 2506, 2508, 2510, 2514, 2515, 2517,
1552  2519, 2523, 2528, 2537, 2538, 2540, 2544, 2546, 2551, 2552,
1553  2557, 2558, 2562, 2564, 2568, 2570, 2575, 2576, 2581, 2582,
1554  2586, 2588
1555 };
1556 #endif
1557 
1558 /** Accessing symbol of state STATE. */
1559 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1560 
1561 #if YYDEBUG || 0
1562 /* The user-facing name of the symbol whose (internal) number is
1563  YYSYMBOL. No bounds checking. */
1564 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1565 
1566 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1567  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1568 static const char *const yytname[] =
1569 {
1570  "\"end of file\"", "error", "\"invalid token\"", "TK_IDENT",
1571  "TK_CHARCON", "TK_INTCON", "TK_FLOATCON", "TK_NAMED_TYPE",
1572  "TK_STRINGCON", "TK_WSTRINGCON", "TK_EOF", "TK_CHAR", "TK_INT",
1573  "TK_INT128", "TK_UINT128", "TK_DOUBLE", "TK_FLOAT", "TK_VOID",
1574  "TK_COMPLEX", "TK_ENUM", "TK_STRUCT", "TK_TYPEDEF", "TK_UNION",
1575  "TK_SIGNED", "TK_UNSIGNED", "TK_LONG", "TK_SHORT", "TK_VOLATILE",
1576  "TK_EXTERN", "TK_STATIC", "TK_CONST", "TK_RESTRICT", "TK_AUTO",
1577  "TK_REGISTER", "TK_THREAD", "TK_STATIC_DIMENSION", "TK_SIZEOF",
1578  "TK_ALIGNOF", "TK_EQ", "TK_PLUS_EQ", "TK_MINUS_EQ", "TK_STAR_EQ",
1579  "TK_SLASH_EQ", "TK_PERCENT_EQ", "TK_AND_EQ", "TK_PIPE_EQ", "TK_CIRC_EQ",
1580  "TK_INF_INF_EQ", "TK_SUP_SUP_EQ", "TK_ARROW", "TK_DOT", "TK_EQ_EQ",
1581  "TK_EXCLAM_EQ", "TK_INF", "TK_SUP", "TK_INF_EQ", "TK_SUP_EQ", "TK_PLUS",
1582  "TK_MINUS", "TK_STAR", "TK_SLASH", "TK_PERCENT", "TK_TILDE", "TK_AND",
1583  "TK_PIPE", "TK_CIRC", "TK_EXCLAM", "TK_AND_AND", "TK_PIPE_PIPE",
1584  "TK_INF_INF", "TK_SUP_SUP", "TK_PLUS_PLUS", "TK_MINUS_MINUS",
1585  "TK_RPAREN", "TK_LPAREN", "TK_RBRACE", "TK_LBRACE", "TK_LBRACKET",
1586  "TK_RBRACKET", "TK_COLON", "TK_SEMICOLON", "TK_COMMA", "TK_ELLIPSIS",
1587  "TK_QUEST", "TK_BREAK", "TK_CONTINUE", "TK_GOTO", "TK_RETURN",
1588  "TK_SWITCH", "TK_CASE", "TK_DEFAULT", "TK_WHILE", "TK_DO", "TK_FOR",
1589  "TK_IF", "TK_ELSE", "TK_ATTRIBUTE", "TK_INLINE", "TK_ASM", "TK_TYPEOF",
1590  "TK_FUNCTION__", "TK_PRETTY_FUNCTION__", "TK_LABEL__",
1591  "TK_BUILTIN_VA_ARG", "TK_BUILTIN_VA_LIST", "TK_BLOCKATTRIBUTE",
1592  "TK_DECLSPEC", "TK_MSASM", "TK_MSATTR", "TK_PRAGMA", "TK_AT_TRANSFORM",
1593  "TK_AT_TRANSFORMEXPR", "TK_AT_SPECIFIER", "TK_AT_EXPR", "TK_AT_NAME",
1594  "TK_COMPLEXCON", "TK_CAST", "TK_ADDROF", "$accept", "interpret", "file",
1595  "globals", "location", "global", "id_or_typename", "maybecomma",
1596  "expression", "constant", "string_constant", "one_string_constant",
1597  "string_list", "wstring_list", "one_string", "init_expression",
1598  "initializer_list", "initializer_list_opt", "initializer", "eq_opt",
1599  "init_designators", "init_designators_opt", "gcc_init_designators",
1600  "arguments", "opt_expression", "comma_expression",
1601  "comma_expression_opt", "paren_comma_expression",
1602  "bracket_comma_expression", "block", "$@1", "$@2", "block_attrs",
1603  "declaration_list", "statement_list", "local_labels",
1604  "local_label_names", "statement", "$@3", "$@4", "$@5", "$@6", "$@7",
1605  "for_clause", "declaration", "init_declarator_list", "init_declarator",
1606  "decl_spec_list", "decl_spec_list_opt", "decl_spec_list_opt_no_named",
1607  "@8", "type_spec", "struct_decl_list", "field_decl_list", "field_decl",
1608  "enum_list", "enumerator", "declarator", "direct_decl",
1609  "parameter_list_startscope", "rest_par_list", "rest_par_list1",
1610  "parameter_decl", "old_proto_decl", "direct_old_proto_decl",
1611  "old_parameter_list_ne", "old_pardef_list", "old_pardef", "pointer",
1612  "pointer_opt", "type_name", "abstract_decl", "abs_direct_decl",
1613  "abs_direct_decl_opt", "function_def", "function_def_start",
1614  "attributes", "attributes_with_asm", "attribute", "attr", "attr_list_ne",
1615  "paren_attr_list_ne", "asmattr", "asmtemplate", "asmoutputs",
1616  "asmoperands", "asmoperandsne", "asmoperand", "asminputs", "asmclobber",
1617  "asmcloberlst_ne", YY_NULLPTR
1618 };
1619 
1620 static const char *
1621 yysymbol_name (yysymbol_kind_t yysymbol)
1622 {
1623  return yytname[yysymbol];
1624 }
1625 #endif
1626 
1627 #define YYPACT_NINF (-454)
1628 
1629 #define yypact_value_is_default(Yyn) \
1630  ((Yyn) == YYPACT_NINF)
1631 
1632 #define YYTABLE_NINF (-288)
1633 
1634 #define yytable_value_is_error(Yyn) \
1635  0
1636 
1637 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1638  STATE-NUM. */
1639 static const yytype_int16 yypact[] =
1640 {
1641  2751, -54, -454, -454, -454, -454, -454, -454, -454, -454,
1642  -454, 61, 98, 3157, 106, -454, -454, -454, -454, -454,
1643  3157, 3157, -454, -454, 3157, 3157, 3157, -454, 2751, 2,
1644  3157, 29, 117, 126, -454, 2862, -27, 128, 141, 39,
1645  33, -454, 90, 2751, -454, -38, 3157, -454, 17, 3157,
1646  214, 3026, -454, -454, 226, 162, 164, 2789, 176, -454,
1647  -454, 2789, 218, -454, -454, -454, -454, -454, -454, 126,
1648  -454, 15, 2116, 1862, -454, -47, -454, -454, -454, 2412,
1649  2484, 2502, 2502, 2502, 2502, 2502, 2502, 2862, 219, -454,
1650  -454, -454, -454, 15, -454, 3845, 2966, 2502, 299, -454,
1651  -454, 228, -454, 197, -454, 230, 225, 24, -454, -454,
1652  104, -454, -454, -454, -454, -454, -454, -454, 231, 241,
1653  3026, 111, 244, 245, 294, 253, -454, 334, 226, 260,
1654  154, 266, 2789, 276, 2789, 280, 281, -454, -454, -454,
1655  -454, -454, 2574, 2646, 2502, 2502, 2502, 2502, 2502, 2502,
1656  353, 2502, 2502, 954, 283, 285, -454, 3324, -454, -454,
1657  121, -454, 11, 288, 55, 2672, 292, 1937, 363, -454,
1658  954, 960, 954, 960, 1600, 1600, 960, 960, 960, 960,
1659  3820, 364, -454, 91, 91, 2862, 2862, 2862, 2862, 2862,
1660  2862, 2862, 2862, 2502, 2862, 2862, 2862, 2862, 2862, 2862,
1661  2862, 2862, 2862, 297, 3370, 302, -454, 317, 197, -454,
1662  317, 2264, 197, -454, 505, -454, 304, 278, 214, 3157,
1663  310, -454, 108, 204, -454, -454, 2997, -454, 2502, 207,
1664  306, 311, 253, 2789, 2502, 2789, 307, 296, 309, 104,
1665  -454, 315, -454, 320, -454, 316, 954, 275, 954, 275,
1666  1193, 1193, 275, 275, 275, 275, -454, 275, 275, 157,
1667  3416, 313, 325, 326, 2502, 398, 2502, 2502, 2502, 2502,
1668  2502, 2502, 2502, 2502, 2502, 2502, 2502, 91, 91, 2502,
1669  2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502,
1670  2502, 2502, 2502, 2502, 2502, 2502, 2502, -454, -454, -454,
1671  1147, 1628, 1221, -454, -454, -454, 329, -454, -454, -454,
1672  2012, 2012, -454, -454, -454, 332, 335, -454, -454, -454,
1673  -454, 1469, 1469, 1785, 1785, 1785, 1785, 270, 270, 960,
1674  122, 122, 1385, 719, 832, 606, 3867, 445, 445, 407,
1675  410, -454, -454, -454, -454, 377, 2189, 3692, -454, 317,
1676  214, 197, 345, 3026, -454, 491, -454, 417, 321, -454,
1677  21, 347, -454, 308, 1080, 1160, 348, -454, 245, 3692,
1678  -454, -454, -454, -454, 354, -454, 3692, -454, 2789, -28,
1679  2502, -454, -454, -454, 355, 357, -454, 1700, 1700, -454,
1680  -454, 2338, 3462, 367, 3692, 3692, 3692, 3692, 3692, 3692,
1681  3692, 3692, 3692, 3692, 3692, -454, -454, 2884, 2884, 1443,
1682  1443, 1443, 1443, 1193, 1193, 275, 275, 275, 2373, 3791,
1683  2299, 3762, 3144, 1521, 1521, 360, 369, -454, 4, 366,
1684  356, -454, 362, 365, -454, -454, 477, 477, 371, 373,
1685  374, 91, 2502, 376, -454, -454, 370, 384, 414, 2264,
1686  375, 393, 1293, 15, 399, -454, 392, 394, 126, 3157,
1687  -454, 403, 418, -454, 406, 317, -454, 3026, -454, 1311,
1688  -454, -454, -454, -454, 3692, 477, 477, -454, -454, 2189,
1689  275, 3157, -454, -454, -454, -454, 2502, 317, 2751, 2502,
1690  -37, 3232, -454, -454, 2189, -454, 2264, -454, -454, 3157,
1691  120, -454, 421, 428, -454, 417, 278, -454, 615, 3157,
1692  -38, 21, 3128, -454, 434, 435, 431, 437, 442, 3727,
1693  448, 3508, -454, -454, -37, 2502, -454, -454, -454, -454,
1694  -454, 197, -454, -454, 360, 446, -454, 444, 449, 27,
1695  1394, -454, 2502, 451, -454, -454, -454, 454, 277, -454,
1696  457, -454, -454, 615, -454, -454, -454, -454, -454, -454,
1697  -454, -454, -454, -454, -454, -454, -454, 3554, -454, 67,
1698  728, -454, -454, 458, 1700, -454, 462, 454, 3278, -454,
1699  454, 841, 470, 1718, 841, 277, 277, 471, -454, 456,
1700  -454, -454, -454, 468, -454, -454, 466, -454, -454, -454,
1701  2502, 841, 459, 1067, 157, 460, -454, -454, 546, -454,
1702  841, -454, 841, 3600, -454, 454, 476, -454, 1474, 841,
1703  -454, 546, 497, -454, -454, 501, 1474, 503, -454, -454,
1704  15, 511, -454, 506, 1554, 514, 512, 504, -454, 513,
1705  1554, 521, 1790, 15, -454, 15, -454, 523, 841, 525,
1706  3646, 526, -454, 841, -454, -454, -454, 546, -454, -454,
1707  519, -454, 546, -454
1708 };
1709 
1710 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1711  Performed when YYTABLE does not specify something else to do. Zero
1712  means the default is an error. */
1713 static const yytype_int16 yydefact[] =
1714 {
1715  4, 0, 212, 192, 194, 195, 196, 200, 199, 191,
1716  197, 0, 0, 186, 0, 201, 202, 198, 193, 285,
1717  186, 186, 283, 284, 186, 186, 186, 286, 4, 0,
1718  186, 0, 0, 0, 282, 287, 0, 0, 0, 0,
1719  0, 3, 0, 4, 8, 257, 188, 9, 0, 186,
1720  235, 236, 17, 18, 0, 0, 209, 0, 203, 187,
1721  176, 0, 206, 177, 178, 179, 180, 181, 6, 0,
1722  183, 0, 0, 0, 281, 17, 293, 92, 295, 0,
1723  0, 0, 0, 0, 0, 0, 0, 287, 0, 93,
1724  94, 288, 294, 85, 87, 11, 7, 0, 0, 1,
1725  2, 0, 5, 275, 171, 0, 172, 174, 271, 258,
1726  0, 190, 182, 189, 7, 125, 269, 184, 248, 0,
1727  0, 257, 0, 238, 227, 20, 224, 0, 0, 0,
1728  257, 0, 0, 0, 0, 0, 0, 23, 82, 79,
1729  80, 89, 0, 0, 0, 0, 0, 0, 0, 0,
1730  0, 0, 0, 0, 0, 0, 81, 0, 22, 83,
1731  84, 41, 257, 0, 0, 328, 0, 0, 0, 292,
1732  0, 296, 0, 298, 300, 301, 302, 305, 303, 304,
1733  0, 0, 88, 0, 0, 287, 287, 287, 287, 287,
1734  287, 287, 287, 0, 287, 287, 287, 287, 287, 287,
1735  287, 287, 287, 0, 0, 0, 16, 257, 275, 170,
1736  257, 0, 275, 230, 277, 245, 0, 136, 0, 250,
1737  0, 241, 258, 268, 242, 272, 0, 237, 0, 0,
1738  0, 0, 20, 0, 0, 0, 0, 219, 221, 0,
1739  205, 0, 208, 0, 280, 0, 0, 24, 0, 26,
1740  28, 29, 30, 33, 31, 32, 77, 34, 36, 7,
1741  116, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1742  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1743  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1744  0, 0, 0, 0, 0, 0, 0, 35, 37, 213,
1745  0, 0, 0, 44, 91, 90, 268, 259, 214, 332,
1746  0, 0, 331, 291, 289, 0, 0, 326, 290, 324,
1747  325, 316, 317, 318, 319, 320, 321, 306, 307, 308,
1748  309, 310, 313, 314, 315, 311, 312, 322, 323, 0,
1749  0, 185, 256, 276, 173, 174, 99, 95, 175, 257,
1750  235, 275, 0, 236, 229, 277, 128, 0, 129, 249,
1751  0, 273, 244, 0, 277, 275, 0, 239, 238, 228,
1752  226, 225, 211, 19, 0, 218, 223, 216, 0, 257,
1753  0, 204, 207, 10, 0, 0, 122, 0, 0, 121,
1754  40, 0, 0, 0, 64, 65, 66, 67, 68, 69,
1755  70, 71, 72, 73, 74, 38, 39, 56, 57, 58,
1756  59, 60, 61, 46, 47, 48, 49, 50, 53, 54,
1757  55, 51, 52, 62, 63, 0, 0, 113, 0, 0,
1758  0, 115, 0, 0, 330, 329, 297, 299, 0, 0,
1759  23, 0, 0, 0, 103, 100, 0, 97, 105, 0,
1760  0, 0, 0, 0, 0, 278, 138, 0, 0, 131,
1761  255, 253, 0, 12, 0, 257, 235, 236, 261, 0,
1762  240, 210, 217, 220, 222, 25, 27, 118, 117, 99,
1763  75, 0, 78, 42, 124, 123, 0, 257, 4, 0,
1764  109, 0, 111, 96, 99, 104, 0, 102, 231, 250,
1765  0, 120, 0, 0, 234, 0, 136, 130, 0, 131,
1766  257, 0, 250, 264, 0, 0, 0, 0, 0, 45,
1767  0, 0, 110, 106, 109, 0, 98, 101, 246, 233,
1768  232, 275, 139, 137, 7, 23, 140, 0, 0, 0,
1769  0, 145, 0, 0, 148, 150, 152, 0, 333, 165,
1770  0, 142, 126, 0, 166, 132, 254, 251, 252, 263,
1771  266, 265, 76, 43, 14, 15, 107, 0, 279, 0,
1772  0, 160, 161, 0, 0, 158, 0, 0, 0, 157,
1773  0, 0, 0, 0, 0, 333, 333, 0, 141, 0,
1774  134, 108, 167, 23, 154, 162, 0, 159, 146, 155,
1775  0, 0, 0, 0, 0, 143, 334, 335, 0, 127,
1776  0, 163, 0, 0, 149, 0, 0, 153, 0, 0,
1777  86, 336, 338, 147, 156, 0, 0, 0, 144, 337,
1778  340, 0, 151, 0, 0, 0, 346, 341, 342, 0,
1779  0, 0, 0, 340, 339, 0, 164, 0, 0, 0,
1780  0, 348, 343, 0, 169, 345, 344, 0, 347, 168,
1781  350, 349, 0, 351
1782 };
1783 
1784 /* YYPGOTO[NTERM-NUM]. */
1785 static const yytype_int16 yypgoto[] =
1786 {
1787  -454, -454, -454, -26, -111, 510, -4, 380, -25, -454,
1788  -35, -431, -454, -454, -52, -196, -454, -446, -454, -454,
1789  -453, 78, -454, -454, -290, -107, 138, -378, -454, 44,
1790  -454, -454, -454, 100, 62, 119, 109, -210, -454, -454,
1791  -454, -454, -454, -454, 1, 443, -454, 53, 467, -454,
1792  -454, -454, -45, 289, -454, 551, 425, -33, 570, 8,
1793  -334, 324, -114, -454, -454, -192, -316, 172, -117, -31,
1794  -103, -87, -454, -454, -454, -454, -74, 330, -68, 372,
1795  12, -64, -301, 63, -454, 45, -454, 48, -454, -454,
1796  32
1797 };
1798 
1799 /* YYDEFGOTO[NTERM-NUM]. */
1800 static const yytype_int16 yydefgoto[] =
1801 {
1802  0, 39, 40, 41, 42, 43, 91, 230, 260, 158,
1803  159, 621, 93, 160, 94, 444, 445, 446, 447, 496,
1804  448, 523, 449, 426, 430, 550, 502, 161, 303, 551,
1805  217, 589, 459, 508, 552, 358, 457, 553, 577, 612,
1806  580, 581, 582, 617, 554, 105, 106, 510, 60, 112,
1807  113, 46, 131, 236, 237, 125, 126, 238, 364, 353,
1808  122, 227, 123, 108, 215, 119, 361, 462, 109, 239,
1809  163, 514, 365, 366, 47, 48, 207, 354, 49, 165,
1810  166, 74, 587, 622, 631, 636, 637, 638, 644, 658,
1811  661
1812 };
1813 
1814 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1815  positive, shift that token. If negative, reduce the rule whose
1816  number is the opposite. If YYTABLE_NINF, syntax error. */
1817 static const yytype_int16 yytable[] =
1818 {
1819  92, 44, 68, 216, 222, 135, 220, 56, 58, 51,
1820  62, 169, 107, 441, 110, 348, 133, 102, 114, 454,
1821  50, 103, 460, 77, -257, -270, 359, 167, -257, 44,
1822  573, 103, 168, 517, 224, 208, 136, 522, 92, 99,
1823  442, 182, 104, 100, 44, 222, 261, 157, 526, 96,
1824  263, 234, 92, 45, 171, 173, 174, 175, 176, 177,
1825  178, 179, 211, 261, 52, 261, 59, 315, 53, 316,
1826  103, 522, 204, 59, 59, 307, 69, 59, 59, 59,
1827  103, 45, 484, 59, -260, 387, 574, 241, 221, 243,
1828  223, 101, 116, 115, 52, -257, 45, 44, 53, 111,
1829  -270, 52, 59, 71, 121, 53, 213, 52, 305, 52,
1830  130, 53, 368, 53, 130, 89, 90, 247, 249, 250,
1831  251, 252, 253, 254, 255, 162, 257, 258, 309, 77,
1832  304, 306, 92, 515, 343, -257, 310, 54, 349, 261,
1833  208, 261, 356, 384, 208, 385, 355, 592, 216, 45,
1834  92, 92, 92, 92, 92, 92, 92, 92, 451, 92,
1835  92, 92, 92, 92, 92, 92, 92, 92, 329, 584,
1836  103, 183, 184, 121, 57, 55, 342, 345, 212, 319,
1837  320, -262, 61, 528, -243, 130, 347, 130, 375, -262,
1838  377, 72, -243, 427, 429, 431, 558, 262, 529, 598,
1839  73, 387, 601, 369, 97, 55, 162, 52, 370, 376,
1840  124, 53, 55, 103, 262, 98, 262, 118, 55, 213,
1841  55, 89, 90, 162, 19, 162, 660, 22, 23, 124,
1842  386, 660, 27, 234, 235, 213, 127, 625, 387, 392,
1843  128, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1844  403, 404, 132, 497, 407, 408, 409, 410, 411, 412,
1845  413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
1846  423, 424, 360, 405, 406, 92, 92, 452, 363, 121,
1847  477, 478, -21, 208, 606, 607, 130, 355, 130, 465,
1848  262, 468, 262, 29, 134, 208, 355, 208, 181, 162,
1849  527, 162, 205, 33, 585, 34, 210, 586, 206, 464,
1850  209, -275, 218, 616, 219, -275, 450, 225, 55, 183,
1851  184, 347, 434, 435, 277, 278, 226, 461, 627, 193,
1852  194, 195, 228, 472, 229, 19, 633, 231, 22, 23,
1853  233, 240, 443, 27, 641, 501, 297, 298, 222, 300,
1854  647, 242, 301, 244, 245, 474, 256, 264, 487, 265,
1855  594, 308, 501, 464, 208, 312, 480, -275, 314, 318,
1856  222, 602, 339, 467, 605, 341, 103, 379, 518, 356,
1857  357, 372, -275, 362, 373, -275, 389, 378, 380, 19,
1858  381, 614, 22, 23, 507, 382, 383, 27, 390, 391,
1859  594, 393, 623, 432, 29, 436, 121, 95, 437, 628,
1860  438, 480, 480, 439, 33, 211, 34, 491, 503, 453,
1861  456, -275, -275, 569, 347, 469, 458, 463, 475, 471,
1862  476, 130, 450, 576, 223, 486, -275, 490, 654, -275,
1863  482, 387, 483, 659, 485, 493, 310, 488, 498, 489,
1864  480, 480, 495, -17, 347, 492, 306, 568, 29, 180,
1865  509, 519, 520, 208, 521, 494, 499, 596, 33, 347,
1866  34, 347, 504, 505, 506, 443, 261, 345, 461, 513,
1867  137, 138, 139, 140, 511, 77, 141, 63, 64, 44,
1868  443, 65, 66, 67, 183, 184, 431, 70, 512, 530,
1869  567, 531, 191, 192, 193, 194, 195, 559, 560, 561,
1870  509, 431, 562, 142, 143, 563, 117, 578, 19, 431,
1871  121, 22, 23, 564, 571, 570, 27, 431, 583, 572,
1872  579, 609, 19, 431, 162, 22, 23, 588, 595, 147,
1873  27, 45, 597, 149, 603, 608, 611, 610, 151, 152,
1874  615, 153, 360, 479, 620, 619, 626, 321, 322, 323,
1875  324, 325, 326, 327, 328, 360, 330, 331, 332, 333,
1876  334, 335, 336, 337, 338, 613, 630, 89, 90, 350,
1877  154, 632, 351, 634, 639, 645, 640, 29, 642, 352,
1878  155, 643, 156, 646, 648, 635, 653, 33, 655, 34,
1879  662, 29, 566, 352, 618, 657, 203, 516, 635, 555,
1880  635, 33, 374, 34, 532, 590, 534, 650, 535, 138,
1881  139, 140, 2, 77, 141, 533, 3, 4, 5, 6,
1882  7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1883  17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1884  27, 142, 143, 344, 371, 183, 184, 185, 186, 187,
1885  188, 189, 190, 191, 192, 193, 194, 195, 473, 196,
1886  197, 198, 144, 145, 146, 201, 202, 147, 148, 232,
1887  214, 149, 150, 556, 629, 455, 151, 152, 651, 153,
1888  -133, 115, 470, 652, 663, 536, 0, 0, 0, 537,
1889  538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
1890  0, 29, 30, 548, 32, 89, 90, 0, 154, 0,
1891  0, 33, 549, 34, 0, 0, 0, 38, 155, 534,
1892  156, 593, 138, 139, 140, 2, 77, 141, 0, 3,
1893  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
1894  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1895  24, 25, 26, 27, 142, 143, 0, 0, 183, 184,
1896  185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1897  195, 0, 196, 0, 198, 144, 145, 146, 201, 202,
1898  147, 148, 0, 0, 149, 150, 0, 0, 0, 151,
1899  152, 0, 153, -135, 115, 0, 0, 0, 536, 0,
1900  0, 0, 537, 538, 539, 540, 541, 542, 543, 544,
1901  545, 546, 547, 0, 29, 30, 548, 32, 89, 90,
1902  0, 154, 0, 0, 33, 549, 34, 0, 0, 0,
1903  38, 155, 534, 156, 593, 138, 139, 140, 2, 77,
1904  141, 0, 3, 4, 5, 6, 7, 8, 9, 10,
1905  11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
1906  21, 22, 23, 24, 25, 26, 27, 142, 143, 0,
1907  0, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1908  192, 193, 194, 195, 0, 196, 0, 0, 144, 145,
1909  146, 201, 202, 147, 148, 0, 0, 149, 150, 0,
1910  0, 0, 151, 152, 0, 153, 0, 115, 0, 0,
1911  0, 536, 0, 0, 0, 537, 538, 539, 540, 541,
1912  542, 543, 544, 545, 546, 547, 0, 29, 30, 548,
1913  32, 89, 90, 0, 154, 0, 0, 33, 549, 34,
1914  0, 0, 0, 38, 155, 259, 156, 137, 138, 139,
1915  140, 2, 77, 141, 0, 3, 4, 5, 6, 7,
1916  8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
1917  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1918  142, 143, 0, 0, 0, 0, 0, 0, 266, 267,
1919  268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1920  278, 144, 145, 146, 0, 0, 147, 148, 0, 0,
1921  149, 150, 0, 0, 0, 151, 152, 0, 153, 0,
1922  115, 297, 298, 0, 300, 0, 0, 301, 0, 0,
1923  0, 0, 0, 302, 0, 0, 0, 0, 0, 0,
1924  29, 30, 0, 32, 89, 90, 0, 154, 0, 0,
1925  33, 0, 34, 0, 0, 0, 38, 155, 425, 156,
1926  137, 138, 139, 140, 2, 77, 141, 0, 3, 4,
1927  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1928  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1929  25, 26, 27, 142, 143, 0, 0, 19, 0, 0,
1930  22, 23, 0, 0, 0, 27, 0, 0, 0, 0,
1931  0, 0, 0, 0, 144, 145, 146, 0, 0, 147,
1932  148, 0, 0, 149, 150, 0, 0, 0, 151, 152,
1933  0, 153, 0, 0, 0, 0, 0, -114, 425, 0,
1934  137, 138, 139, 140, 466, 77, 141, 351, 0, 0,
1935  0, 0, 0, 29, 30, 0, 32, 89, 90, 0,
1936  154, 0, 0, 33, 0, 34, 29, 0, 352, 38,
1937  155, 0, 156, 142, 143, 0, 33, 19, 34, 0,
1938  22, 23, 0, 0, 0, 27, 0, 0, 0, 0,
1939  0, 0, 0, 0, 144, 145, 146, 0, 0, 147,
1940  148, 0, 0, 149, 150, 0, 0, 0, 151, 152,
1941  -112, 153, 425, 0, 137, 138, 139, 140, 0, 77,
1942  141, 0, 0, 0, 466, 0, 0, -267, 0, 0,
1943  0, 0, 277, 278, 0, 0, 0, 89, 90, 0,
1944  154, 0, 287, 288, 289, 0, 29, 142, 143, 0,
1945  155, 0, 156, 0, 297, 298, 33, 300, 34, 0,
1946  301, 0, 0, 0, 0, 0, 0, 0, 144, 145,
1947  146, 0, 0, 147, 148, 0, 0, 149, 150, 0,
1948  0, 0, 151, 152, 500, 153, 137, 138, 139, 140,
1949  -114, 77, 141, 0, 0, 0, 0, 0, 0, 0,
1950  0, 0, 425, 0, 137, 138, 139, 140, 0, 77,
1951  141, 89, 90, 0, 154, 0, 0, 0, 0, 142,
1952  143, 0, 0, 0, 155, 0, 156, 0, 0, 0,
1953  0, 0, 0, 0, 0, 0, 0, 142, 143, 0,
1954  144, 145, 146, 0, 0, 147, 148, 0, 0, 149,
1955  150, 0, 0, 0, 151, 152, 0, 153, 144, 145,
1956  146, -119, 0, 147, 148, 0, 0, 149, 150, 0,
1957  0, 0, 151, 152, 0, 153, 0, 0, 0, -119,
1958  0, 0, 0, 89, 90, 425, 154, 137, 138, 139,
1959  140, 0, 77, 141, 0, 0, 155, 0, 156, 0,
1960  0, 89, 90, 0, 154, 0, 0, 0, 0, 0,
1961  0, 0, 0, 0, 155, 0, 156, 0, 0, 0,
1962  142, 143, 0, 0, 183, 184, 185, 186, 187, 188,
1963  189, 190, 191, 192, 193, 194, 195, 0, 0, 0,
1964  0, 144, 145, 146, 201, 202, 147, 148, 0, 0,
1965  149, 150, 0, 0, 0, 151, 152, 0, 153, 0,
1966  0, 0, 0, 0, 575, 425, 0, 137, 138, 139,
1967  140, 0, 77, 141, 0, 0, 0, 0, 0, 0,
1968  0, 0, 277, 278, 89, 90, 0, 154, 0, 0,
1969  285, 286, 287, 288, 289, 0, 0, 155, 0, 156,
1970  142, 143, 295, 296, 297, 298, 0, 300, 183, 184,
1971  301, 0, 187, 188, 189, 190, 191, 192, 193, 194,
1972  195, 144, 145, 146, 0, 0, 147, 148, 201, 202,
1973  149, 150, 0, 0, 0, 151, 152, 0, 153, 0,
1974  0, 0, 0, 0, -114, 425, 0, 137, 138, 139,
1975  140, 0, 77, 141, 0, 0, 0, 0, 0, 0,
1976  277, 278, 0, 0, 89, 90, 0, 154, 285, 286,
1977  287, 288, 289, 0, 0, 0, 0, 155, 0, 156,
1978  142, 143, 297, 298, 0, 300, 0, 0, 301, 0,
1979  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1980  0, 144, 145, 146, 0, 0, 147, 148, 0, 0,
1981  149, 150, 0, 0, 0, 151, 152, -114, 153, 428,
1982  0, 137, 138, 139, 140, 0, 77, 141, 266, 267,
1983  268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1984  278, 0, 0, 0, 89, 90, 0, 154, 0, 287,
1985  288, 289, 0, 0, 142, 143, 0, 155, 0, 156,
1986  0, 297, 298, 0, 300, 0, 0, 301, 0, 0,
1987  0, 0, 0, 302, 0, 144, 145, 146, 0, 0,
1988  147, 148, 0, 0, 149, 150, 0, 0, 0, 151,
1989  152, 425, 153, 137, 138, 139, 140, 0, 77, 141,
1990  0, 0, 0, 0, 0, 0, 0, 0, 0, 604,
1991  0, 137, 138, 139, 140, 0, 77, 141, 89, 90,
1992  0, 154, 0, 0, 0, 0, 142, 143, 0, 0,
1993  0, 155, 0, 156, 0, 0, 0, 0, 0, 0,
1994  0, 0, 0, 0, 142, 143, 0, 144, 145, 146,
1995  0, 0, 147, 148, 0, 0, 149, 150, 0, 0,
1996  0, 151, 152, 0, 153, 144, 145, 146, 0, 0,
1997  147, 148, 0, 0, 149, 150, 0, 0, 0, 151,
1998  152, 649, 153, 137, 138, 139, 140, 0, 77, 141,
1999  89, 90, 0, 154, 0, 0, 0, 0, 0, 0,
2000  0, 0, 0, 155, 0, 156, 0, 0, 89, 90,
2001  0, 154, 0, 0, 0, 0, 142, 143, 0, 0,
2002  0, 155, 0, 156, 183, 184, 0, 0, 0, 0,
2003  0, 0, 191, 192, 193, 194, 195, 144, 145, 146,
2004  0, 0, 147, 148, 201, 202, 149, 150, 0, 0,
2005  0, 151, 152, 164, 153, 75, 0, 76, 0, 53,
2006  77, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008  89, 90, 78, 154, 0, 0, 0, 0, 79, 80,
2009  0, 0, 0, 155, 0, 156, 0, 0, 0, 0,
2010  0, -287, -287, -287, -287, -287, -287, -287, -287, 81,
2011  82, 83, -287, -287, 84, 85, -287, -287, 86, -287,
2012  -287, -287, -287, 0, 0, -287, 87, 0, 164, 0,
2013  75, 0, 76, -287, 53, 77, 0, 0, 0, 0,
2014  0, 0, 88, 0, 0, 0, 0, 0, 0, 0,
2015  0, 0, 89, 90, 0, 0, 0, 78, 0, 0,
2016  0, 0, 0, 79, 80, 0, 55, 0, 0, 0,
2017  0, 0, 0, 0, 0, 0, -287, -287, -287, -287,
2018  -287, -287, -287, -287, 81, 82, 83, -287, -287, 84,
2019  85, -287, -287, 86, -287, -287, -287, -287, 0, 0,
2020  313, 87, 0, 433, 0, 75, 0, 76, -287, 53,
2021  77, 0, 0, 0, 0, 0, 0, 88, 0, 0,
2022  0, 0, 0, 0, 0, 0, 0, 89, 90, 0,
2023  0, 0, 78, 0, 0, 0, 0, 0, 79, 80,
2024  0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
2025  0, -287, -287, -287, -287, -287, -287, -287, -287, 81,
2026  82, 83, -287, -287, 84, 85, -287, -287, 86, -287,
2027  -287, -287, -287, 0, 0, -287, 87, 0, 0, 0,
2028  0, 0, 0, -287, 0, 0, 0, 0, 0, 0,
2029  0, 0, 88, 0, 0, 0, 0, 0, 0, 0,
2030  0, 0, 89, 90, 0, 0, 0, 0, 0, 137,
2031  138, 139, 140, 2, 77, 141, 55, 3, 4, 5,
2032  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2033  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
2034  26, 27, 142, 143, 0, 0, 0, 0, 0, 0,
2035  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036  0, 0, 0, 144, 145, 146, 0, 0, 147, 148,
2037  0, 0, 149, 150, 0, 0, 0, 151, 152, 0,
2038  153, 0, 440, 138, 139, 140, 53, 77, 141, 0,
2039  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040  0, 0, 29, 30, 0, 32, 89, 90, 0, 154,
2041  0, 0, 33, 0, 34, 142, 143, 0, 38, 155,
2042  0, 156, 0, 0, 0, 0, 0, 0, 0, 441,
2043  0, 0, 0, 0, 0, 0, 144, 145, 146, 0,
2044  0, 147, 148, 0, 0, 149, 150, 0, 0, 0,
2045  151, 152, 0, 153, 0, 346, 442, 137, 138, 139,
2046  140, 0, 77, 141, 0, 0, 0, 0, 0, 0,
2047  0, 0, 0, 0, 0, 0, 0, 0, 0, 89,
2048  90, 0, 154, 0, 0, 0, 0, 0, 0, 0,
2049  142, 143, 155, 55, 156, 0, 0, 0, 0, 0,
2050  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051  0, 144, 145, 146, 0, 0, 147, 148, 0, 0,
2052  149, 150, 0, 0, 0, 151, 152, 0, 153, 0,
2053  346, 137, 138, 139, 140, 0, 77, 141, 277, 278,
2054  279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
2055  289, 0, 290, 0, 89, 90, 0, 154, 295, 296,
2056  297, 298, 0, 300, 142, 143, 301, 155, 0, 156,
2057  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058  0, 0, 0, 0, 0, 144, 145, 146, 0, 0,
2059  147, 148, 0, 0, 149, 150, 0, 0, 0, 151,
2060  152, 0, 153, 0, 479, 137, 138, 139, 140, 0,
2061  77, 141, 277, 278, 279, 280, 281, 282, 283, 284,
2062  285, 286, 287, 288, 289, 0, 0, 0, 89, 90,
2063  0, 154, 295, 296, 297, 298, 0, 300, 142, 143,
2064  301, 155, 0, 156, 0, 0, 0, 0, 0, 0,
2065  0, 0, 0, 0, 0, 0, 0, 0, 0, 144,
2066  145, 146, 0, 0, 147, 148, 0, 0, 149, 150,
2067  0, 0, 0, 151, 152, 0, 170, 137, 138, 139,
2068  140, 0, 77, 141, 0, 0, 0, 0, 0, 0,
2069  0, 0, 0, 0, 0, 137, 138, 139, 140, 0,
2070  77, 141, 89, 90, 0, 154, 0, 0, 0, 0,
2071  142, 143, 0, 0, 0, 155, 0, 156, 0, 0,
2072  0, 0, 0, 0, 0, 0, 0, 0, 142, 143,
2073  0, 144, 145, 146, 0, 0, 147, 148, 0, 0,
2074  149, 150, 0, 0, 0, 151, 152, 0, 172, 144,
2075  145, 146, 0, 0, 147, 148, 0, 0, 149, 150,
2076  0, 0, 0, 151, 152, 0, 153, 137, 138, 139,
2077  140, 0, 77, 141, 89, 90, 0, 154, 0, 0,
2078  0, 0, 0, 0, 0, 0, 0, 155, 0, 156,
2079  0, 0, 89, 90, 0, 154, 0, 0, 0, 0,
2080  142, 143, 0, 0, 0, 155, 0, 156, 0, 0,
2081  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082  0, 144, 145, 146, 0, 0, 147, 148, 0, 0,
2083  149, 150, 0, 0, 0, 151, 152, 0, 246, 137,
2084  138, 139, 140, 0, 77, 141, 0, 0, 0, 0,
2085  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086  0, 0, 0, 0, 89, 90, 0, 154, 0, 0,
2087  0, 0, 142, 143, 0, 0, 0, 155, 0, 156,
2088  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089  0, 0, 0, 144, 145, 146, 0, 0, 147, 148,
2090  0, 0, 149, 150, 0, 0, 0, 151, 152, 0,
2091  248, 183, 184, 185, 186, 187, 188, 189, 190, 191,
2092  192, 193, 194, 195, 0, 196, 197, 198, 0, 199,
2093  200, 201, 202, 0, 0, 0, 89, 90, 0, 154,
2094  0, 0, -7, 311, 1, 0, 0, 0, 2, 155,
2095  0, 156, 3, 4, 5, 6, 7, 8, 9, 10,
2096  11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
2097  21, 22, 23, 24, 25, 26, 27, 0, 0, 0,
2098  129, 0, 0, 0, 0, 0, 2, 0, 0, 0,
2099  3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
2100  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
2101  23, 24, 25, 26, 27, 0, 0, 0, 0, 0,
2102  0, 28, 0, 0, 0, 0, 0, 0, 0, 0,
2103  0, 0, 0, 0, 0, 0, 0, 29, 30, 31,
2104  32, 0, 0, 0, 0, 0, 0, 33, 0, 34,
2105  35, 36, 37, 38, -215, 75, 0, 76, 0, 53,
2106  77, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107  0, 0, 0, 0, 0, 29, 30, 0, 32, 0,
2108  0, 0, 78, 0, 0, 33, 0, 34, 79, 80,
2109  0, 38, 0, 0, 0, 0, 0, 0, 0, 0,
2110  0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
2111  82, 83, 0, 0, 84, 85, 0, 0, 86, 0,
2112  0, 0, 0, 277, 278, 0, 87, 281, 282, 283,
2113  284, 285, 286, 287, 288, 289, 0, 0, 0, 0,
2114  0, 0, 88, 295, 296, 297, 298, 0, 300, 0,
2115  0, 301, 89, 90, 0, 0, 0, 0, 0, 1,
2116  0, 0, 0, 2, 0, 0, 55, 3, 4, 5,
2117  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2118  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
2119  26, 27, 0, 0, 2, 0, 0, 0, 3, 4,
2120  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2121  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2122  25, 26, 27, 2, 0, 0, 0, 3, 4, 5,
2123  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2124  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
2125  26, 27, 29, 30, 31, 32, 0, 0, 0, 0,
2126  0, 120, 33, 0, 34, 35, 36, 37, 38, 367,
2127  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128  0, 0, 0, 29, 30, 0, 32, 0, 0, 0,
2129  120, 0, 0, 33, 0, 34, 0, 0, 0, 38,
2130  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131  0, 0, 29, 30, 0, 32, 0, 0, 0, 0,
2132  0, 0, 33, 0, 34, 2, 0, 0, 38, 3,
2133  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
2134  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
2135  24, 25, 26, 27, 2, 0, 0, 0, 3, 4,
2136  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2137  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2138  25, 26, 27, 277, 278, 279, 280, 281, 282, 283,
2139  284, 285, 286, 287, 288, 289, 0, 290, 291, 292,
2140  557, 293, 0, 295, 296, 297, 298, 0, 300, 0,
2141  0, 301, 0, 0, 29, 30, 0, 32, 0, 0,
2142  0, 0, 0, 0, 33, 0, 34, 0, 0, 0,
2143  38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144  0, 0, 0, 29, 30, 0, 32, 0, 0, 0,
2145  0, 0, 0, 33, 0, 34, 0, 0, 0, 38,
2146  266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
2147  276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
2148  286, 287, 288, 289, 0, 290, 291, 292, 0, 293,
2149  294, 295, 296, 297, 298, 0, 300, 0, 0, 301,
2150  524, 0, 0, 0, 525, 302, 266, 267, 268, 269,
2151  270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
2152  280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
2153  0, 290, 291, 292, 0, 293, 294, 295, 296, 297,
2154  298, 0, 300, 0, 0, 301, 0, 599, 0, 0,
2155  600, 302, 266, 267, 268, 269, 270, 271, 272, 273,
2156  274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
2157  284, 285, 286, 287, 288, 289, 0, 290, 291, 292,
2158  0, 293, 294, 295, 296, 297, 298, 299, 300, 0,
2159  0, 301, 0, 0, 0, 0, 0, 302, 266, 267,
2160  268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
2161  278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
2162  288, 289, 0, 290, 291, 292, 0, 293, 294, 295,
2163  296, 297, 298, 0, 300, 340, 0, 301, 0, 0,
2164  0, 0, 0, 302, 266, 267, 268, 269, 270, 271,
2165  272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
2166  282, 283, 284, 285, 286, 287, 288, 289, 0, 290,
2167  291, 292, 0, 293, 294, 295, 296, 297, 298, 0,
2168  300, 0, 0, 301, 0, 0, 0, 388, 0, 302,
2169  266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
2170  276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
2171  286, 287, 288, 289, 0, 290, 291, 292, 0, 293,
2172  294, 295, 296, 297, 298, 0, 300, 0, 0, 301,
2173  0, 0, 0, 481, 0, 302, 266, 267, 268, 269,
2174  270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
2175  280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
2176  0, 290, 291, 292, 0, 293, 294, 295, 296, 297,
2177  298, 0, 300, 565, 0, 301, 0, 0, 0, 0,
2178  0, 302, 266, 267, 268, 269, 270, 271, 272, 273,
2179  274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
2180  284, 285, 286, 287, 288, 289, 0, 290, 291, 292,
2181  0, 293, 294, 295, 296, 297, 298, 0, 300, 0,
2182  0, 301, 591, 0, 0, 0, 0, 302, 266, 267,
2183  268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
2184  278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
2185  288, 289, 0, 290, 291, 292, 0, 293, 294, 295,
2186  296, 297, 298, 0, 300, 0, 0, 301, 0, 624,
2187  0, 0, 0, 302, 266, 267, 268, 269, 270, 271,
2188  272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
2189  282, 283, 284, 285, 286, 287, 288, 289, 0, 290,
2190  291, 292, 0, 293, 294, 295, 296, 297, 298, 656,
2191  300, 0, 0, 301, 0, 0, 0, 0, 0, 302,
2192  266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
2193  276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
2194  286, 287, 288, 289, 0, 290, 291, 292, 0, 293,
2195  294, 295, 296, 297, 298, 0, 300, 0, 0, 301,
2196  0, 0, 0, 0, 0, 302, 277, 278, 279, 280,
2197  281, 282, 283, 284, 285, 286, 287, 288, 289, 0,
2198  290, 291, 292, 0, 293, 294, 295, 296, 297, 298,
2199  0, 300, 0, 0, 301, 0, 0, 0, 0, 0,
2200  302, 277, 278, 279, 280, 281, 282, 283, 284, 285,
2201  286, 287, 288, 289, 0, 290, 291, 292, 0, 0,
2202  0, 295, 296, 297, 298, 0, 300, 0, 0, 301,
2203  277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
2204  287, 288, 289, 0, 290, 0, 292, 0, 0, 0,
2205  295, 296, 297, 298, 0, 300, 0, 0, 301, 183,
2206  184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
2207  194, 195, 0, 196, 197, 198, 0, 199, 200, 201,
2208  202, 0, 0, 317, 183, 184, 185, 186, 187, 188,
2209  189, 190, 191, 192, 193, 194, 195, 0, 196, 197,
2210  198, 0, 199, 200, 201, 202, 183, 184, 185, 186,
2211  187, 188, 189, 190, 191, 192, 193, 194, 195, 0,
2212  196, 197, 198, 0, 199, 0, 201, 202
2213 };
2214 
2215 static const yytype_int16 yycheck[] =
2216 {
2217  35, 0, 28, 114, 121, 69, 120, 11, 12, 1,
2218  14, 75, 45, 50, 45, 211, 61, 43, 1, 353,
2219  74, 59, 1, 8, 3, 1, 218, 74, 7, 28,
2220  3, 59, 79, 479, 121, 103, 71, 490, 73, 0,
2221  77, 93, 80, 10, 43, 162, 153, 72, 494, 76,
2222  153, 79, 87, 0, 79, 80, 81, 82, 83, 84,
2223  85, 86, 38, 170, 3, 172, 13, 170, 7, 172,
2224  59, 524, 97, 20, 21, 162, 74, 24, 25, 26,
2225  59, 28, 78, 30, 73, 81, 59, 132, 121, 134,
2226  121, 1, 48, 76, 3, 74, 43, 96, 7, 46,
2227  76, 3, 49, 74, 51, 7, 110, 3, 160, 3,
2228  57, 7, 226, 7, 61, 100, 101, 142, 143, 144,
2229  145, 146, 147, 148, 149, 72, 151, 152, 73, 8,
2230  9, 162, 167, 467, 208, 114, 81, 76, 212, 246,
2231  208, 248, 75, 246, 212, 248, 214, 80, 259, 96,
2232  185, 186, 187, 188, 189, 190, 191, 192, 350, 194,
2233  195, 196, 197, 198, 199, 200, 201, 202, 193, 547,
2234  59, 49, 50, 120, 76, 114, 207, 210, 74, 183,
2235  184, 73, 76, 499, 73, 132, 211, 134, 233, 81,
2236  235, 74, 81, 300, 301, 302, 512, 153, 78, 577,
2237  74, 81, 580, 228, 76, 114, 153, 3, 1, 234,
2238  3, 7, 114, 59, 170, 74, 172, 3, 114, 223,
2239  114, 100, 101, 170, 27, 172, 657, 30, 31, 3,
2240  73, 662, 35, 79, 80, 239, 74, 615, 81, 264,
2241  76, 266, 267, 268, 269, 270, 271, 272, 273, 274,
2242  275, 276, 76, 449, 279, 280, 281, 282, 283, 284,
2243  285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
2244  295, 296, 219, 277, 278, 310, 311, 351, 74, 226,
2245  387, 388, 75, 351, 585, 586, 233, 355, 235, 363,
2246  246, 365, 248, 96, 76, 363, 364, 365, 79, 246,
2247  496, 248, 3, 106, 27, 108, 81, 30, 80, 1,
2248  80, 3, 81, 603, 73, 7, 349, 73, 114, 49,
2249  50, 346, 310, 311, 49, 50, 81, 360, 618, 59,
2250  60, 61, 38, 378, 81, 27, 626, 3, 30, 31,
2251  80, 75, 346, 35, 634, 452, 71, 72, 465, 74,
2252  640, 75, 77, 73, 73, 380, 3, 74, 432, 74,
2253  570, 73, 469, 1, 432, 73, 391, 59, 5, 5,
2254  487, 581, 75, 365, 584, 73, 59, 81, 481, 75,
2255  102, 75, 74, 73, 73, 77, 73, 80, 79, 27,
2256  75, 601, 30, 31, 458, 75, 80, 35, 73, 73,
2257  610, 3, 612, 74, 96, 73, 353, 35, 73, 619,
2258  3, 436, 437, 3, 106, 38, 108, 442, 453, 74,
2259  3, 59, 114, 534, 449, 77, 105, 80, 73, 75,
2260  73, 378, 465, 540, 465, 79, 74, 441, 648, 77,
2261  73, 81, 73, 653, 78, 75, 81, 76, 73, 76,
2262  475, 476, 38, 79, 479, 79, 487, 531, 96, 87,
2263  459, 486, 488, 531, 489, 81, 73, 574, 106, 494,
2264  108, 496, 73, 81, 80, 479, 583, 510, 511, 73,
2265  3, 4, 5, 6, 81, 8, 9, 20, 21, 488,
2266  494, 24, 25, 26, 49, 50, 603, 30, 80, 78,
2267  525, 73, 57, 58, 59, 60, 61, 73, 73, 78,
2268  509, 618, 75, 36, 37, 73, 49, 542, 27, 626,
2269  467, 30, 31, 75, 80, 79, 35, 634, 74, 80,
2270  79, 75, 27, 640, 481, 30, 31, 80, 80, 62,
2271  35, 488, 80, 66, 74, 74, 80, 79, 71, 72,
2272  91, 74, 499, 76, 8, 95, 80, 185, 186, 187,
2273  188, 189, 190, 191, 192, 512, 194, 195, 196, 197,
2274  198, 199, 200, 201, 202, 600, 79, 100, 101, 74,
2275  103, 80, 77, 80, 73, 81, 80, 96, 74, 98,
2276  113, 79, 115, 80, 73, 630, 73, 106, 73, 108,
2277  81, 96, 524, 98, 603, 79, 96, 469, 643, 509,
2278  645, 106, 232, 108, 505, 553, 1, 642, 3, 4,
2279  5, 6, 7, 8, 9, 506, 11, 12, 13, 14,
2280  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2281  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2282  35, 36, 37, 210, 229, 49, 50, 51, 52, 53,
2283  54, 55, 56, 57, 58, 59, 60, 61, 379, 63,
2284  64, 65, 57, 58, 59, 69, 70, 62, 63, 128,
2285  110, 66, 67, 511, 621, 355, 71, 72, 643, 74,
2286  75, 76, 368, 645, 662, 80, -1, -1, -1, 84,
2287  85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
2288  -1, 96, 97, 98, 99, 100, 101, -1, 103, -1,
2289  -1, 106, 107, 108, -1, -1, -1, 112, 113, 1,
2290  115, 3, 4, 5, 6, 7, 8, 9, -1, 11,
2291  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
2292  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2293  32, 33, 34, 35, 36, 37, -1, -1, 49, 50,
2294  51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
2295  61, -1, 63, -1, 65, 57, 58, 59, 69, 70,
2296  62, 63, -1, -1, 66, 67, -1, -1, -1, 71,
2297  72, -1, 74, 75, 76, -1, -1, -1, 80, -1,
2298  -1, -1, 84, 85, 86, 87, 88, 89, 90, 91,
2299  92, 93, 94, -1, 96, 97, 98, 99, 100, 101,
2300  -1, 103, -1, -1, 106, 107, 108, -1, -1, -1,
2301  112, 113, 1, 115, 3, 4, 5, 6, 7, 8,
2302  9, -1, 11, 12, 13, 14, 15, 16, 17, 18,
2303  19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
2304  29, 30, 31, 32, 33, 34, 35, 36, 37, -1,
2305  -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2306  58, 59, 60, 61, -1, 63, -1, -1, 57, 58,
2307  59, 69, 70, 62, 63, -1, -1, 66, 67, -1,
2308  -1, -1, 71, 72, -1, 74, -1, 76, -1, -1,
2309  -1, 80, -1, -1, -1, 84, 85, 86, 87, 88,
2310  89, 90, 91, 92, 93, 94, -1, 96, 97, 98,
2311  99, 100, 101, -1, 103, -1, -1, 106, 107, 108,
2312  -1, -1, -1, 112, 113, 1, 115, 3, 4, 5,
2313  6, 7, 8, 9, -1, 11, 12, 13, 14, 15,
2314  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
2315  26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
2316  36, 37, -1, -1, -1, -1, -1, -1, 38, 39,
2317  40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
2318  50, 57, 58, 59, -1, -1, 62, 63, -1, -1,
2319  66, 67, -1, -1, -1, 71, 72, -1, 74, -1,
2320  76, 71, 72, -1, 74, -1, -1, 77, -1, -1,
2321  -1, -1, -1, 83, -1, -1, -1, -1, -1, -1,
2322  96, 97, -1, 99, 100, 101, -1, 103, -1, -1,
2323  106, -1, 108, -1, -1, -1, 112, 113, 1, 115,
2324  3, 4, 5, 6, 7, 8, 9, -1, 11, 12,
2325  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
2326  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
2327  33, 34, 35, 36, 37, -1, -1, 27, -1, -1,
2328  30, 31, -1, -1, -1, 35, -1, -1, -1, -1,
2329  -1, -1, -1, -1, 57, 58, 59, -1, -1, 62,
2330  63, -1, -1, 66, 67, -1, -1, -1, 71, 72,
2331  -1, 74, -1, -1, -1, -1, -1, 80, 1, -1,
2332  3, 4, 5, 6, 74, 8, 9, 77, -1, -1,
2333  -1, -1, -1, 96, 97, -1, 99, 100, 101, -1,
2334  103, -1, -1, 106, -1, 108, 96, -1, 98, 112,
2335  113, -1, 115, 36, 37, -1, 106, 27, 108, -1,
2336  30, 31, -1, -1, -1, 35, -1, -1, -1, -1,
2337  -1, -1, -1, -1, 57, 58, 59, -1, -1, 62,
2338  63, -1, -1, 66, 67, -1, -1, -1, 71, 72,
2339  73, 74, 1, -1, 3, 4, 5, 6, -1, 8,
2340  9, -1, -1, -1, 74, -1, -1, 77, -1, -1,
2341  -1, -1, 49, 50, -1, -1, -1, 100, 101, -1,
2342  103, -1, 59, 60, 61, -1, 96, 36, 37, -1,
2343  113, -1, 115, -1, 71, 72, 106, 74, 108, -1,
2344  77, -1, -1, -1, -1, -1, -1, -1, 57, 58,
2345  59, -1, -1, 62, 63, -1, -1, 66, 67, -1,
2346  -1, -1, 71, 72, 1, 74, 3, 4, 5, 6,
2347  79, 8, 9, -1, -1, -1, -1, -1, -1, -1,
2348  -1, -1, 1, -1, 3, 4, 5, 6, -1, 8,
2349  9, 100, 101, -1, 103, -1, -1, -1, -1, 36,
2350  37, -1, -1, -1, 113, -1, 115, -1, -1, -1,
2351  -1, -1, -1, -1, -1, -1, -1, 36, 37, -1,
2352  57, 58, 59, -1, -1, 62, 63, -1, -1, 66,
2353  67, -1, -1, -1, 71, 72, -1, 74, 57, 58,
2354  59, 78, -1, 62, 63, -1, -1, 66, 67, -1,
2355  -1, -1, 71, 72, -1, 74, -1, -1, -1, 78,
2356  -1, -1, -1, 100, 101, 1, 103, 3, 4, 5,
2357  6, -1, 8, 9, -1, -1, 113, -1, 115, -1,
2358  -1, 100, 101, -1, 103, -1, -1, -1, -1, -1,
2359  -1, -1, -1, -1, 113, -1, 115, -1, -1, -1,
2360  36, 37, -1, -1, 49, 50, 51, 52, 53, 54,
2361  55, 56, 57, 58, 59, 60, 61, -1, -1, -1,
2362  -1, 57, 58, 59, 69, 70, 62, 63, -1, -1,
2363  66, 67, -1, -1, -1, 71, 72, -1, 74, -1,
2364  -1, -1, -1, -1, 80, 1, -1, 3, 4, 5,
2365  6, -1, 8, 9, -1, -1, -1, -1, -1, -1,
2366  -1, -1, 49, 50, 100, 101, -1, 103, -1, -1,
2367  57, 58, 59, 60, 61, -1, -1, 113, -1, 115,
2368  36, 37, 69, 70, 71, 72, -1, 74, 49, 50,
2369  77, -1, 53, 54, 55, 56, 57, 58, 59, 60,
2370  61, 57, 58, 59, -1, -1, 62, 63, 69, 70,
2371  66, 67, -1, -1, -1, 71, 72, -1, 74, -1,
2372  -1, -1, -1, -1, 80, 1, -1, 3, 4, 5,
2373  6, -1, 8, 9, -1, -1, -1, -1, -1, -1,
2374  49, 50, -1, -1, 100, 101, -1, 103, 57, 58,
2375  59, 60, 61, -1, -1, -1, -1, 113, -1, 115,
2376  36, 37, 71, 72, -1, 74, -1, -1, 77, -1,
2377  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2378  -1, 57, 58, 59, -1, -1, 62, 63, -1, -1,
2379  66, 67, -1, -1, -1, 71, 72, 73, 74, 1,
2380  -1, 3, 4, 5, 6, -1, 8, 9, 38, 39,
2381  40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
2382  50, -1, -1, -1, 100, 101, -1, 103, -1, 59,
2383  60, 61, -1, -1, 36, 37, -1, 113, -1, 115,
2384  -1, 71, 72, -1, 74, -1, -1, 77, -1, -1,
2385  -1, -1, -1, 83, -1, 57, 58, 59, -1, -1,
2386  62, 63, -1, -1, 66, 67, -1, -1, -1, 71,
2387  72, 1, 74, 3, 4, 5, 6, -1, 8, 9,
2388  -1, -1, -1, -1, -1, -1, -1, -1, -1, 1,
2389  -1, 3, 4, 5, 6, -1, 8, 9, 100, 101,
2390  -1, 103, -1, -1, -1, -1, 36, 37, -1, -1,
2391  -1, 113, -1, 115, -1, -1, -1, -1, -1, -1,
2392  -1, -1, -1, -1, 36, 37, -1, 57, 58, 59,
2393  -1, -1, 62, 63, -1, -1, 66, 67, -1, -1,
2394  -1, 71, 72, -1, 74, 57, 58, 59, -1, -1,
2395  62, 63, -1, -1, 66, 67, -1, -1, -1, 71,
2396  72, 1, 74, 3, 4, 5, 6, -1, 8, 9,
2397  100, 101, -1, 103, -1, -1, -1, -1, -1, -1,
2398  -1, -1, -1, 113, -1, 115, -1, -1, 100, 101,
2399  -1, 103, -1, -1, -1, -1, 36, 37, -1, -1,
2400  -1, 113, -1, 115, 49, 50, -1, -1, -1, -1,
2401  -1, -1, 57, 58, 59, 60, 61, 57, 58, 59,
2402  -1, -1, 62, 63, 69, 70, 66, 67, -1, -1,
2403  -1, 71, 72, 1, 74, 3, -1, 5, -1, 7,
2404  8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2405  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2406  100, 101, 30, 103, -1, -1, -1, -1, 36, 37,
2407  -1, -1, -1, 113, -1, 115, -1, -1, -1, -1,
2408  -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2409  58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
2410  68, 69, 70, -1, -1, 73, 74, -1, 1, -1,
2411  3, -1, 5, 81, 7, 8, -1, -1, -1, -1,
2412  -1, -1, 90, -1, -1, -1, -1, -1, -1, -1,
2413  -1, -1, 100, 101, -1, -1, -1, 30, -1, -1,
2414  -1, -1, -1, 36, 37, -1, 114, -1, -1, -1,
2415  -1, -1, -1, -1, -1, -1, 49, 50, 51, 52,
2416  53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
2417  63, 64, 65, 66, 67, 68, 69, 70, -1, -1,
2418  73, 74, -1, 1, -1, 3, -1, 5, 81, 7,
2419  8, -1, -1, -1, -1, -1, -1, 90, -1, -1,
2420  -1, -1, -1, -1, -1, -1, -1, 100, 101, -1,
2421  -1, -1, 30, -1, -1, -1, -1, -1, 36, 37,
2422  -1, 114, -1, -1, -1, -1, -1, -1, -1, -1,
2423  -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2424  58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
2425  68, 69, 70, -1, -1, 73, 74, -1, -1, -1,
2426  -1, -1, -1, 81, -1, -1, -1, -1, -1, -1,
2427  -1, -1, 90, -1, -1, -1, -1, -1, -1, -1,
2428  -1, -1, 100, 101, -1, -1, -1, -1, -1, 3,
2429  4, 5, 6, 7, 8, 9, 114, 11, 12, 13,
2430  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
2431  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
2432  34, 35, 36, 37, -1, -1, -1, -1, -1, -1,
2433  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2434  -1, -1, -1, 57, 58, 59, -1, -1, 62, 63,
2435  -1, -1, 66, 67, -1, -1, -1, 71, 72, -1,
2436  74, -1, 3, 4, 5, 6, 7, 8, 9, -1,
2437  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2438  -1, -1, 96, 97, -1, 99, 100, 101, -1, 103,
2439  -1, -1, 106, -1, 108, 36, 37, -1, 112, 113,
2440  -1, 115, -1, -1, -1, -1, -1, -1, -1, 50,
2441  -1, -1, -1, -1, -1, -1, 57, 58, 59, -1,
2442  -1, 62, 63, -1, -1, 66, 67, -1, -1, -1,
2443  71, 72, -1, 74, -1, 76, 77, 3, 4, 5,
2444  6, -1, 8, 9, -1, -1, -1, -1, -1, -1,
2445  -1, -1, -1, -1, -1, -1, -1, -1, -1, 100,
2446  101, -1, 103, -1, -1, -1, -1, -1, -1, -1,
2447  36, 37, 113, 114, 115, -1, -1, -1, -1, -1,
2448  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2449  -1, 57, 58, 59, -1, -1, 62, 63, -1, -1,
2450  66, 67, -1, -1, -1, 71, 72, -1, 74, -1,
2451  76, 3, 4, 5, 6, -1, 8, 9, 49, 50,
2452  51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
2453  61, -1, 63, -1, 100, 101, -1, 103, 69, 70,
2454  71, 72, -1, 74, 36, 37, 77, 113, -1, 115,
2455  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2456  -1, -1, -1, -1, -1, 57, 58, 59, -1, -1,
2457  62, 63, -1, -1, 66, 67, -1, -1, -1, 71,
2458  72, -1, 74, -1, 76, 3, 4, 5, 6, -1,
2459  8, 9, 49, 50, 51, 52, 53, 54, 55, 56,
2460  57, 58, 59, 60, 61, -1, -1, -1, 100, 101,
2461  -1, 103, 69, 70, 71, 72, -1, 74, 36, 37,
2462  77, 113, -1, 115, -1, -1, -1, -1, -1, -1,
2463  -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
2464  58, 59, -1, -1, 62, 63, -1, -1, 66, 67,
2465  -1, -1, -1, 71, 72, -1, 74, 3, 4, 5,
2466  6, -1, 8, 9, -1, -1, -1, -1, -1, -1,
2467  -1, -1, -1, -1, -1, 3, 4, 5, 6, -1,
2468  8, 9, 100, 101, -1, 103, -1, -1, -1, -1,
2469  36, 37, -1, -1, -1, 113, -1, 115, -1, -1,
2470  -1, -1, -1, -1, -1, -1, -1, -1, 36, 37,
2471  -1, 57, 58, 59, -1, -1, 62, 63, -1, -1,
2472  66, 67, -1, -1, -1, 71, 72, -1, 74, 57,
2473  58, 59, -1, -1, 62, 63, -1, -1, 66, 67,
2474  -1, -1, -1, 71, 72, -1, 74, 3, 4, 5,
2475  6, -1, 8, 9, 100, 101, -1, 103, -1, -1,
2476  -1, -1, -1, -1, -1, -1, -1, 113, -1, 115,
2477  -1, -1, 100, 101, -1, 103, -1, -1, -1, -1,
2478  36, 37, -1, -1, -1, 113, -1, 115, -1, -1,
2479  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2480  -1, 57, 58, 59, -1, -1, 62, 63, -1, -1,
2481  66, 67, -1, -1, -1, 71, 72, -1, 74, 3,
2482  4, 5, 6, -1, 8, 9, -1, -1, -1, -1,
2483  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2484  -1, -1, -1, -1, 100, 101, -1, 103, -1, -1,
2485  -1, -1, 36, 37, -1, -1, -1, 113, -1, 115,
2486  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2487  -1, -1, -1, 57, 58, 59, -1, -1, 62, 63,
2488  -1, -1, 66, 67, -1, -1, -1, 71, 72, -1,
2489  74, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2490  58, 59, 60, 61, -1, 63, 64, 65, -1, 67,
2491  68, 69, 70, -1, -1, -1, 100, 101, -1, 103,
2492  -1, -1, 1, 81, 3, -1, -1, -1, 7, 113,
2493  -1, 115, 11, 12, 13, 14, 15, 16, 17, 18,
2494  19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
2495  29, 30, 31, 32, 33, 34, 35, -1, -1, -1,
2496  1, -1, -1, -1, -1, -1, 7, -1, -1, -1,
2497  11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
2498  21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
2499  31, 32, 33, 34, 35, -1, -1, -1, -1, -1,
2500  -1, 80, -1, -1, -1, -1, -1, -1, -1, -1,
2501  -1, -1, -1, -1, -1, -1, -1, 96, 97, 98,
2502  99, -1, -1, -1, -1, -1, -1, 106, -1, 108,
2503  109, 110, 111, 112, 75, 3, -1, 5, -1, 7,
2504  8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2505  -1, -1, -1, -1, -1, 96, 97, -1, 99, -1,
2506  -1, -1, 30, -1, -1, 106, -1, 108, 36, 37,
2507  -1, 112, -1, -1, -1, -1, -1, -1, -1, -1,
2508  -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
2509  58, 59, -1, -1, 62, 63, -1, -1, 66, -1,
2510  -1, -1, -1, 49, 50, -1, 74, 53, 54, 55,
2511  56, 57, 58, 59, 60, 61, -1, -1, -1, -1,
2512  -1, -1, 90, 69, 70, 71, 72, -1, 74, -1,
2513  -1, 77, 100, 101, -1, -1, -1, -1, -1, 3,
2514  -1, -1, -1, 7, -1, -1, 114, 11, 12, 13,
2515  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
2516  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
2517  34, 35, -1, -1, 7, -1, -1, -1, 11, 12,
2518  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
2519  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
2520  33, 34, 35, 7, -1, -1, -1, 11, 12, 13,
2521  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
2522  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
2523  34, 35, 96, 97, 98, 99, -1, -1, -1, -1,
2524  -1, 74, 106, -1, 108, 109, 110, 111, 112, 82,
2525  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2526  -1, -1, -1, 96, 97, -1, 99, -1, -1, -1,
2527  74, -1, -1, 106, -1, 108, -1, -1, -1, 112,
2528  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2529  -1, -1, 96, 97, -1, 99, -1, -1, -1, -1,
2530  -1, -1, 106, -1, 108, 7, -1, -1, 112, 11,
2531  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
2532  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2533  32, 33, 34, 35, 7, -1, -1, -1, 11, 12,
2534  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
2535  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
2536  33, 34, 35, 49, 50, 51, 52, 53, 54, 55,
2537  56, 57, 58, 59, 60, 61, -1, 63, 64, 65,
2538  82, 67, -1, 69, 70, 71, 72, -1, 74, -1,
2539  -1, 77, -1, -1, 96, 97, -1, 99, -1, -1,
2540  -1, -1, -1, -1, 106, -1, 108, -1, -1, -1,
2541  112, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2542  -1, -1, -1, 96, 97, -1, 99, -1, -1, -1,
2543  -1, -1, -1, 106, -1, 108, -1, -1, -1, 112,
2544  38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2545  48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2546  58, 59, 60, 61, -1, 63, 64, 65, -1, 67,
2547  68, 69, 70, 71, 72, -1, 74, -1, -1, 77,
2548  78, -1, -1, -1, 82, 83, 38, 39, 40, 41,
2549  42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
2550  52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
2551  -1, 63, 64, 65, -1, 67, 68, 69, 70, 71,
2552  72, -1, 74, -1, -1, 77, -1, 79, -1, -1,
2553  82, 83, 38, 39, 40, 41, 42, 43, 44, 45,
2554  46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
2555  56, 57, 58, 59, 60, 61, -1, 63, 64, 65,
2556  -1, 67, 68, 69, 70, 71, 72, 73, 74, -1,
2557  -1, 77, -1, -1, -1, -1, -1, 83, 38, 39,
2558  40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
2559  50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
2560  60, 61, -1, 63, 64, 65, -1, 67, 68, 69,
2561  70, 71, 72, -1, 74, 75, -1, 77, -1, -1,
2562  -1, -1, -1, 83, 38, 39, 40, 41, 42, 43,
2563  44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
2564  54, 55, 56, 57, 58, 59, 60, 61, -1, 63,
2565  64, 65, -1, 67, 68, 69, 70, 71, 72, -1,
2566  74, -1, -1, 77, -1, -1, -1, 81, -1, 83,
2567  38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2568  48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2569  58, 59, 60, 61, -1, 63, 64, 65, -1, 67,
2570  68, 69, 70, 71, 72, -1, 74, -1, -1, 77,
2571  -1, -1, -1, 81, -1, 83, 38, 39, 40, 41,
2572  42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
2573  52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
2574  -1, 63, 64, 65, -1, 67, 68, 69, 70, 71,
2575  72, -1, 74, 75, -1, 77, -1, -1, -1, -1,
2576  -1, 83, 38, 39, 40, 41, 42, 43, 44, 45,
2577  46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
2578  56, 57, 58, 59, 60, 61, -1, 63, 64, 65,
2579  -1, 67, 68, 69, 70, 71, 72, -1, 74, -1,
2580  -1, 77, 78, -1, -1, -1, -1, 83, 38, 39,
2581  40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
2582  50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
2583  60, 61, -1, 63, 64, 65, -1, 67, 68, 69,
2584  70, 71, 72, -1, 74, -1, -1, 77, -1, 79,
2585  -1, -1, -1, 83, 38, 39, 40, 41, 42, 43,
2586  44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
2587  54, 55, 56, 57, 58, 59, 60, 61, -1, 63,
2588  64, 65, -1, 67, 68, 69, 70, 71, 72, 73,
2589  74, -1, -1, 77, -1, -1, -1, -1, -1, 83,
2590  38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2591  48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2592  58, 59, 60, 61, -1, 63, 64, 65, -1, 67,
2593  68, 69, 70, 71, 72, -1, 74, -1, -1, 77,
2594  -1, -1, -1, -1, -1, 83, 49, 50, 51, 52,
2595  53, 54, 55, 56, 57, 58, 59, 60, 61, -1,
2596  63, 64, 65, -1, 67, 68, 69, 70, 71, 72,
2597  -1, 74, -1, -1, 77, -1, -1, -1, -1, -1,
2598  83, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2599  58, 59, 60, 61, -1, 63, 64, 65, -1, -1,
2600  -1, 69, 70, 71, 72, -1, 74, -1, -1, 77,
2601  49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
2602  59, 60, 61, -1, 63, -1, 65, -1, -1, -1,
2603  69, 70, 71, 72, -1, 74, -1, -1, 77, 49,
2604  50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
2605  60, 61, -1, 63, 64, 65, -1, 67, 68, 69,
2606  70, -1, -1, 73, 49, 50, 51, 52, 53, 54,
2607  55, 56, 57, 58, 59, 60, 61, -1, 63, 64,
2608  65, -1, 67, 68, 69, 70, 49, 50, 51, 52,
2609  53, 54, 55, 56, 57, 58, 59, 60, 61, -1,
2610  63, 64, 65, -1, 67, -1, 69, 70
2611 };
2612 
2613 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2614  state STATE-NUM. */
2615 static const yytype_uint8 yystos[] =
2616 {
2617  0, 3, 7, 11, 12, 13, 14, 15, 16, 17,
2618  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
2619  28, 29, 30, 31, 32, 33, 34, 35, 80, 96,
2620  97, 98, 99, 106, 108, 109, 110, 111, 112, 119,
2621  120, 121, 122, 123, 162, 165, 169, 192, 193, 196,
2622  74, 177, 3, 7, 76, 114, 124, 76, 124, 165,
2623  166, 76, 124, 166, 166, 166, 166, 166, 121, 74,
2624  166, 74, 74, 74, 199, 3, 5, 8, 30, 36,
2625  37, 57, 58, 59, 62, 63, 66, 74, 90, 100,
2626  101, 124, 128, 130, 132, 197, 76, 76, 74, 0,
2627  10, 1, 121, 59, 80, 163, 164, 175, 181, 186,
2628  187, 165, 167, 168, 1, 76, 147, 166, 3, 183,
2629  74, 165, 178, 180, 3, 173, 174, 74, 76, 1,
2630  165, 170, 76, 170, 76, 199, 128, 3, 4, 5,
2631  6, 9, 36, 37, 57, 58, 59, 62, 63, 66,
2632  67, 71, 72, 74, 103, 113, 115, 126, 127, 128,
2633  131, 145, 165, 188, 1, 197, 198, 74, 79, 199,
2634  74, 126, 74, 126, 126, 126, 126, 126, 126, 126,
2635  197, 79, 132, 49, 50, 51, 52, 53, 54, 55,
2636  56, 57, 58, 59, 60, 61, 63, 64, 65, 67,
2637  68, 69, 70, 123, 126, 3, 80, 194, 196, 80,
2638  81, 38, 74, 124, 176, 182, 122, 148, 81, 73,
2639  180, 175, 186, 187, 189, 73, 81, 179, 38, 81,
2640  125, 3, 173, 80, 79, 80, 171, 172, 175, 187,
2641  75, 170, 75, 170, 73, 73, 74, 126, 74, 126,
2642  126, 126, 126, 126, 126, 126, 3, 126, 126, 1,
2643  126, 143, 147, 188, 74, 74, 38, 39, 40, 41,
2644  42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
2645  52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
2646  63, 64, 65, 67, 68, 69, 70, 71, 72, 73,
2647  74, 77, 83, 146, 9, 132, 187, 189, 73, 73,
2648  81, 81, 73, 73, 5, 188, 188, 73, 5, 124,
2649  124, 197, 197, 197, 197, 197, 197, 197, 197, 126,
2650  197, 197, 197, 197, 197, 197, 197, 197, 197, 75,
2651  75, 73, 187, 194, 163, 175, 76, 126, 133, 194,
2652  74, 77, 98, 177, 195, 196, 75, 102, 153, 183,
2653  165, 184, 73, 74, 176, 190, 191, 82, 180, 126,
2654  1, 174, 75, 73, 125, 170, 126, 170, 80, 81,
2655  79, 75, 75, 80, 188, 188, 73, 81, 81, 73,
2656  73, 73, 126, 3, 126, 126, 126, 126, 126, 126,
2657  126, 126, 126, 126, 126, 124, 124, 126, 126, 126,
2658  126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
2659  126, 126, 126, 126, 126, 1, 141, 143, 1, 143,
2660  142, 143, 74, 1, 198, 198, 73, 73, 3, 3,
2661  3, 50, 77, 124, 133, 134, 135, 136, 138, 140,
2662  175, 183, 194, 74, 178, 195, 3, 154, 105, 150,
2663  1, 175, 185, 80, 1, 194, 74, 177, 194, 77,
2664  179, 75, 170, 171, 126, 73, 73, 143, 143, 76,
2665  126, 81, 73, 73, 78, 78, 79, 194, 76, 76,
2666  124, 126, 79, 75, 81, 38, 137, 133, 73, 73,
2667  1, 143, 144, 128, 73, 81, 80, 199, 151, 162,
2668  165, 81, 80, 73, 189, 178, 144, 135, 188, 126,
2669  121, 126, 138, 139, 78, 82, 135, 133, 184, 78,
2670  78, 73, 154, 153, 1, 3, 80, 84, 85, 86,
2671  87, 88, 89, 90, 91, 92, 93, 94, 98, 107,
2672  143, 147, 152, 155, 162, 151, 185, 82, 184, 73,
2673  73, 78, 75, 73, 75, 75, 139, 126, 194, 122,
2674  79, 80, 80, 3, 59, 80, 143, 156, 126, 79,
2675  158, 159, 160, 74, 145, 27, 30, 200, 80, 149,
2676  152, 78, 80, 3, 155, 80, 143, 80, 145, 79,
2677  82, 145, 155, 74, 1, 155, 200, 200, 74, 75,
2678  79, 80, 157, 126, 155, 91, 142, 161, 162, 95,
2679  8, 129, 201, 155, 79, 145, 80, 142, 155, 201,
2680  79, 202, 80, 142, 80, 128, 203, 204, 205, 73,
2681  80, 142, 74, 79, 206, 81, 80, 142, 73, 1,
2682  126, 203, 205, 73, 155, 73, 73, 79, 207, 155,
2683  129, 208, 81, 208
2684 };
2685 
2686 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
2687 static const yytype_uint8 yyr1[] =
2688 {
2689  0, 118, 119, 120, 121, 121, 121, 122, 123, 123,
2690  123, 123, 123, 123, 123, 123, 123, 124, 124, 124,
2691  125, 125, 126, 126, 126, 126, 126, 126, 126, 126,
2692  126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
2693  126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
2694  126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
2695  126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
2696  126, 126, 126, 126, 126, 126, 126, 126, 126, 127,
2697  127, 127, 127, 127, 127, 128, 129, 130, 130, 131,
2698  131, 131, 132, 132, 132, 133, 133, 134, 134, 135,
2699  135, 136, 136, 136, 137, 137, 138, 138, 138, 139,
2700  139, 140, 141, 141, 142, 142, 143, 143, 143, 144,
2701  144, 145, 145, 146, 146, 148, 149, 147, 147, 150,
2702  150, 151, 151, 152, 152, 152, 153, 153, 154, 154,
2703  155, 155, 155, 155, 155, 156, 157, 155, 158, 155,
2704  159, 155, 160, 155, 155, 155, 155, 155, 155, 155,
2705  155, 155, 155, 155, 155, 155, 155, 155, 161, 161,
2706  162, 162, 163, 163, 164, 164, 165, 165, 165, 165,
2707  165, 165, 165, 165, 165, 165, 166, 166, 168, 167,
2708  167, 169, 169, 169, 169, 169, 169, 169, 169, 169,
2709  169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
2710  169, 169, 169, 169, 169, 170, 170, 170, 170, 171,
2711  171, 172, 172, 172, 173, 173, 173, 174, 174, 175,
2712  176, 176, 176, 176, 176, 177, 178, 178, 179, 179,
2713  179, 180, 180, 180, 180, 181, 182, 182, 183, 183,
2714  184, 184, 184, 185, 185, 185, 186, 187, 187, 188,
2715  188, 189, 189, 190, 190, 190, 190, 191, 191, 192,
2716  193, 193, 193, 193, 193, 194, 194, 195, 195, 195,
2717  196, 196, 196, 196, 196, 196, 196, 197, 197, 197,
2718  197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
2719  197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
2720  197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
2721  197, 197, 197, 197, 197, 197, 197, 198, 198, 198,
2722  198, 199, 199, 200, 200, 200, 201, 201, 202, 202,
2723  203, 203, 204, 204, 205, 205, 206, 206, 207, 207,
2724  208, 208
2725 };
2726 
2727 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
2728 static const yytype_int8 yyr2[] =
2729 {
2730  0, 2, 2, 1, 0, 2, 2, 0, 1, 1,
2731  5, 2, 6, 4, 8, 8, 3, 1, 1, 4,
2732  0, 1, 1, 1, 2, 4, 2, 4, 2, 2,
2733  2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
2734  3, 1, 4, 6, 2, 5, 3, 3, 3, 3,
2735  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2736  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2737  3, 3, 3, 3, 3, 4, 6, 2, 4, 1,
2738  1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
2739  2, 2, 1, 1, 1, 1, 3, 1, 3, 0,
2740  1, 3, 2, 1, 1, 0, 3, 4, 5, 0,
2741  1, 2, 0, 1, 0, 1, 1, 3, 3, 0,
2742  1, 3, 3, 3, 3, 0, 0, 8, 3, 0,
2743  2, 0, 2, 0, 2, 2, 0, 4, 1, 3,
2744  1, 2, 1, 3, 5, 0, 0, 5, 0, 4,
2745  0, 6, 0, 4, 3, 3, 5, 2, 2, 3,
2746  2, 2, 3, 4, 7, 1, 1, 3, 7, 6,
2747  3, 2, 1, 3, 1, 3, 2, 2, 2, 2,
2748  2, 2, 2, 2, 2, 4, 0, 1, 0, 1,
2749  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2750  1, 1, 1, 2, 5, 4, 2, 5, 4, 2,
2751  6, 5, 1, 4, 4, 0, 3, 4, 3, 1,
2752  3, 1, 3, 2, 1, 3, 3, 1, 3, 3,
2753  1, 4, 5, 5, 4, 1, 0, 2, 0, 2,
2754  3, 2, 2, 1, 3, 2, 5, 3, 1, 3,
2755  0, 4, 4, 1, 3, 1, 3, 0, 1, 2,
2756  1, 3, 1, 4, 3, 4, 4, 1, 0, 2,
2757  2, 2, 4, 5, 3, 0, 2, 0, 2, 5,
2758  4, 2, 1, 1, 1, 1, 1, 0, 1, 3,
2759  3, 3, 2, 1, 1, 1, 2, 4, 2, 4,
2760  2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
2761  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2762  3, 3, 3, 3, 3, 3, 3, 0, 1, 3,
2763  3, 3, 3, 0, 2, 2, 1, 2, 0, 3,
2764  0, 1, 1, 3, 4, 4, 0, 3, 0, 2,
2765  1, 3
2766 };
2767 
2768 
2769 enum { YYENOMEM = -2 };
2770 
2771 #define yyerrok (yyerrstatus = 0)
2772 #define yyclearin (yychar = YYEMPTY)
2773 
2774 #define YYACCEPT goto yyacceptlab
2775 #define YYABORT goto yyabortlab
2776 #define YYERROR goto yyerrorlab
2777 #define YYNOMEM goto yyexhaustedlab
2778 
2779 
2780 #define YYRECOVERING() (!!yyerrstatus)
2781 
2782 #define YYBACKUP(Token, Value) \
2783  do \
2784  if (yychar == YYEMPTY) \
2785  { \
2786  yychar = (Token); \
2787  yylval = (Value); \
2788  YYPOPSTACK (yylen); \
2789  yystate = *yyssp; \
2790  goto yybackup; \
2791  } \
2792  else \
2793  { \
2794  yyerror (YY_("syntax error: cannot back up")); \
2795  YYERROR; \
2796  } \
2797  while (0)
2798 
2799 /* Backward compatibility with an undocumented macro.
2800  Use YYerror or YYUNDEF. */
2801 #define YYERRCODE YYUNDEF
2802 
2803 
2804 /* Enable debugging if requested. */
2805 #if YYDEBUG
2806 
2807 # ifndef YYFPRINTF
2808 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2809 # define YYFPRINTF fprintf
2810 # endif
2811 
2812 # define YYDPRINTF(Args) \
2813 do { \
2814  if (yydebug) \
2815  YYFPRINTF Args; \
2816 } while (0)
2817 
2818 
2819 
2820 
2821 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2822 do { \
2823  if (yydebug) \
2824  { \
2825  YYFPRINTF (stderr, "%s ", Title); \
2826  yy_symbol_print (stderr, \
2827  Kind, Value); \
2828  YYFPRINTF (stderr, "\n"); \
2829  } \
2830 } while (0)
2831 
2832 
2833 /*-----------------------------------.
2834 | Print this symbol's value on YYO. |
2835 `-----------------------------------*/
2836 
2837 static void
2838 yy_symbol_value_print (FILE *yyo,
2839  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2840 {
2841  FILE *yyoutput = yyo;
2842  YY_USE (yyoutput);
2843  if (!yyvaluep)
2844  return;
2846  YY_USE (yykind);
2848 }
2849 
2850 
2851 /*---------------------------.
2852 | Print this symbol on YYO. |
2853 `---------------------------*/
2854 
2855 static void
2856 yy_symbol_print (FILE *yyo,
2857  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2858 {
2859  YYFPRINTF (yyo, "%s %s (",
2860  yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2861 
2862  yy_symbol_value_print (yyo, yykind, yyvaluep);
2863  YYFPRINTF (yyo, ")");
2864 }
2865 
2866 /*------------------------------------------------------------------.
2867 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2868 | TOP (included). |
2869 `------------------------------------------------------------------*/
2870 
2871 static void
2872 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2873 {
2874  YYFPRINTF (stderr, "Stack now");
2875  for (; yybottom <= yytop; yybottom++)
2876  {
2877  int yybot = *yybottom;
2878  YYFPRINTF (stderr, " %d", yybot);
2879  }
2880  YYFPRINTF (stderr, "\n");
2881 }
2882 
2883 # define YY_STACK_PRINT(Bottom, Top) \
2884 do { \
2885  if (yydebug) \
2886  yy_stack_print ((Bottom), (Top)); \
2887 } while (0)
2888 
2889 
2890 /*------------------------------------------------.
2891 | Report that the YYRULE is going to be reduced. |
2892 `------------------------------------------------*/
2893 
2894 static void
2895 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
2896  int yyrule)
2897 {
2898  int yylno = yyrline[yyrule];
2899  int yynrhs = yyr2[yyrule];
2900  int yyi;
2901  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2902  yyrule - 1, yylno);
2903  /* The symbols being reduced. */
2904  for (yyi = 0; yyi < yynrhs; yyi++)
2905  {
2906  YYFPRINTF (stderr, " $%d = ", yyi + 1);
2907  yy_symbol_print (stderr,
2908  YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2909  &yyvsp[(yyi + 1) - (yynrhs)]);
2910  YYFPRINTF (stderr, "\n");
2911  }
2912 }
2913 
2914 # define YY_REDUCE_PRINT(Rule) \
2915 do { \
2916  if (yydebug) \
2917  yy_reduce_print (yyssp, yyvsp, Rule); \
2918 } while (0)
2919 
2920 /* Nonzero means print parse trace. It is left uninitialized so that
2921  multiple parsers can coexist. */
2922 int yydebug;
2923 #else /* !YYDEBUG */
2924 # define YYDPRINTF(Args) ((void) 0)
2925 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2926 # define YY_STACK_PRINT(Bottom, Top)
2927 # define YY_REDUCE_PRINT(Rule)
2928 #endif /* !YYDEBUG */
2929 
2930 
2931 /* YYINITDEPTH -- initial size of the parser's stacks. */
2932 #ifndef YYINITDEPTH
2933 # define YYINITDEPTH 200
2934 #endif
2935 
2936 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2937  if the built-in stack extension method is used).
2938 
2939  Do not make this value too large; the results are undefined if
2940  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2941  evaluated with infinite-precision integer arithmetic. */
2942 
2943 #ifndef YYMAXDEPTH
2944 # define YYMAXDEPTH 10000
2945 #endif
2946 
2947 
2948 
2949 
2950 
2951 
2952 /*-----------------------------------------------.
2953 | Release the memory associated to this symbol. |
2954 `-----------------------------------------------*/
2955 
2956 static void
2957 yydestruct (const char *yymsg,
2958  yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
2959 {
2960  YY_USE (yyvaluep);
2961  if (!yymsg)
2962  yymsg = "Deleting";
2963  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2964 
2966  YY_USE (yykind);
2968 }
2969 
2970 
2971 /* Lookahead token kind. */
2973 
2974 /* The semantic value of the lookahead symbol. */
2976 /* Number of syntax errors so far. */
2978 
2979 
2980 
2981 
2982 /*----------.
2983 | yyparse. |
2984 `----------*/
2985 
2986 int
2987 yyparse (void)
2988 {
2989  yy_state_fast_t yystate = 0;
2990  /* Number of tokens to shift before error messages enabled. */
2991  int yyerrstatus = 0;
2992 
2993  /* Refer to the stacks through separate pointers, to allow yyoverflow
2994  to reallocate them elsewhere. */
2995 
2996  /* Their size. */
2997  YYPTRDIFF_T yystacksize = YYINITDEPTH;
2998 
2999  /* The state stack: array, bottom, top. */
3000  yy_state_t yyssa[YYINITDEPTH];
3001  yy_state_t *yyss = yyssa;
3002  yy_state_t *yyssp = yyss;
3003 
3004  /* The semantic value stack: array, bottom, top. */
3005  YYSTYPE yyvsa[YYINITDEPTH];
3006  YYSTYPE *yyvs = yyvsa;
3007  YYSTYPE *yyvsp = yyvs;
3008 
3009  int yyn;
3010  /* The return value of yyparse. */
3011  int yyresult;
3012  /* Lookahead symbol kind. */
3014  /* The variables used to return semantic value and location from the
3015  action routines. */
3016  YYSTYPE yyval;
3017 
3018 
3019 
3020 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
3021 
3022  /* The number of symbols on the RHS of the reduced rule.
3023  Keep to zero when no symbol should be popped. */
3024  int yylen = 0;
3025 
3026  YYDPRINTF ((stderr, "Starting parse\n"));
3027 
3028  yychar = YYEMPTY; /* Cause a token to be read. */
3029 
3030  goto yysetstate;
3031 
3032 
3033 /*------------------------------------------------------------.
3034 | yynewstate -- push a new state, which is found in yystate. |
3035 `------------------------------------------------------------*/
3036 yynewstate:
3037  /* In all cases, when you get here, the value and location stacks
3038  have just been pushed. So pushing a state here evens the stacks. */
3039  yyssp++;
3040 
3041 
3042 /*--------------------------------------------------------------------.
3043 | yysetstate -- set current state (the top of the stack) to yystate. |
3044 `--------------------------------------------------------------------*/
3045 yysetstate:
3046  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3047  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
3049  *yyssp = YY_CAST (yy_state_t, yystate);
3051  YY_STACK_PRINT (yyss, yyssp);
3052 
3053  if (yyss + yystacksize - 1 <= yyssp)
3054 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
3055  YYNOMEM;
3056 #else
3057  {
3058  /* Get the current used size of the three stacks, in elements. */
3059  YYPTRDIFF_T yysize = yyssp - yyss + 1;
3060 
3061 # if defined yyoverflow
3062  {
3063  /* Give user a chance to reallocate the stack. Use copies of
3064  these so that the &'s don't force the real ones into
3065  memory. */
3066  yy_state_t *yyss1 = yyss;
3067  YYSTYPE *yyvs1 = yyvs;
3068 
3069  /* Each stack pointer address is followed by the size of the
3070  data in use in that stack, in bytes. This used to be a
3071  conditional around just the two extra args, but that might
3072  be undefined if yyoverflow is a macro. */
3073  yyoverflow (YY_("memory exhausted"),
3074  &yyss1, yysize * YYSIZEOF (*yyssp),
3075  &yyvs1, yysize * YYSIZEOF (*yyvsp),
3076  &yystacksize);
3077  yyss = yyss1;
3078  yyvs = yyvs1;
3079  }
3080 # else /* defined YYSTACK_RELOCATE */
3081  /* Extend the stack our own way. */
3082  if (YYMAXDEPTH <= yystacksize)
3083  YYNOMEM;
3084  yystacksize *= 2;
3085  if (YYMAXDEPTH < yystacksize)
3086  yystacksize = YYMAXDEPTH;
3087 
3088  {
3089  yy_state_t *yyss1 = yyss;
3090  union yyalloc *yyptr =
3091  YY_CAST (union yyalloc *,
3092  YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
3093  if (! yyptr)
3094  YYNOMEM;
3095  YYSTACK_RELOCATE (yyss_alloc, yyss);
3096  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3097 # undef YYSTACK_RELOCATE
3098  if (yyss1 != yyssa)
3099  YYSTACK_FREE (yyss1);
3100  }
3101 # endif
3102 
3103  yyssp = yyss + yysize - 1;
3104  yyvsp = yyvs + yysize - 1;
3105 
3107  YYDPRINTF ((stderr, "Stack size increased to %ld\n",
3108  YY_CAST (long, yystacksize)));
3110 
3111  if (yyss + yystacksize - 1 <= yyssp)
3112  YYABORT;
3113  }
3114 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
3115 
3116 
3117  if (yystate == YYFINAL)
3118  YYACCEPT;
3119 
3120  goto yybackup;
3121 
3122 
3123 /*-----------.
3124 | yybackup. |
3125 `-----------*/
3126 yybackup:
3127  /* Do appropriate processing given the current state. Read a
3128  lookahead token if we need one and don't already have one. */
3129 
3130  /* First try to decide what to do without reference to lookahead token. */
3131  yyn = yypact[yystate];
3132  if (yypact_value_is_default (yyn))
3133  goto yydefault;
3134 
3135  /* Not known => get a lookahead token if don't already have one. */
3136 
3137  /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
3138  if (yychar == YYEMPTY)
3139  {
3140  YYDPRINTF ((stderr, "Reading a token\n"));
3141  yychar = yylex ();
3142  }
3143 
3144  if (yychar <= YYEOF)
3145  {
3146  yychar = YYEOF;
3147  yytoken = YYSYMBOL_YYEOF;
3148  YYDPRINTF ((stderr, "Now at end of input.\n"));
3149  }
3150  else if (yychar == YYerror)
3151  {
3152  /* The scanner already issued an error message, process directly
3153  to error recovery. But do not keep the error token as
3154  lookahead, it is too special and may lead us to an endless
3155  loop in error recovery. */
3156  yychar = YYUNDEF;
3157  yytoken = YYSYMBOL_YYerror;
3158  goto yyerrlab1;
3159  }
3160  else
3161  {
3162  yytoken = YYTRANSLATE (yychar);
3163  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3164  }
3165 
3166  /* If the proper action on seeing token YYTOKEN is to reduce or to
3167  detect an error, take that action. */
3168  yyn += yytoken;
3169  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3170  goto yydefault;
3171  yyn = yytable[yyn];
3172  if (yyn <= 0)
3173  {
3174  if (yytable_value_is_error (yyn))
3175  goto yyerrlab;
3176  yyn = -yyn;
3177  goto yyreduce;
3178  }
3179 
3180  /* Count tokens shifted since error; after three, turn off error
3181  status. */
3182  if (yyerrstatus)
3183  yyerrstatus--;
3184 
3185  /* Shift the lookahead token. */
3186  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3187  yystate = yyn;
3189  *++yyvsp = yylval;
3191 
3192  /* Discard the shifted token. */
3193  yychar = YYEMPTY;
3194  goto yynewstate;
3195 
3196 
3197 /*-----------------------------------------------------------.
3198 | yydefault -- do the default action for the current state. |
3199 `-----------------------------------------------------------*/
3200 yydefault:
3201  yyn = yydefact[yystate];
3202  if (yyn == 0)
3203  goto yyerrlab;
3204  goto yyreduce;
3205 
3206 
3207 /*-----------------------------.
3208 | yyreduce -- do a reduction. |
3209 `-----------------------------*/
3210 yyreduce:
3211  /* yyn is the number of a rule to reduce with. */
3212  yylen = yyr2[yyn];
3213 
3214  /* If YYLEN is nonzero, implement the default value of the action:
3215  '$$ = $1'.
3216 
3217  Otherwise, the following line sets YYVAL to garbage.
3218  This behavior is undocumented and Bison
3219  users should not rely upon it. Assigning to YYVAL
3220  unconditionally makes the parser a bit smaller, and it avoids a
3221  GCC warning that YYVAL may be used uninitialized. */
3222  yyval = yyvsp[1-yylen];
3223 
3224 
3225  YY_REDUCE_PRINT (yyn);
3226  switch (yyn)
3227  {
3228  case 2: /* interpret: file TK_EOF */
3229 #line 743 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3230  { YYACCEPT; }
3231 #line 3232 "y.tab.c"
3232  break;
3233 
3234  case 4: /* globals: %empty */
3235 #line 747 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3236  {}
3237 #line 3238 "y.tab.c"
3238  break;
3239 
3240  case 5: /* globals: global globals */
3241 #line 748 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3242  {}
3243 #line 3244 "y.tab.c"
3244  break;
3245 
3246  case 6: /* globals: TK_SEMICOLON globals */
3247 #line 749 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3248  {}
3249 #line 3250 "y.tab.c"
3250  break;
3251 
3252  case 7: /* location: %empty */
3253 #line 753 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3254  {}
3255 #line 3256 "y.tab.c"
3256  break;
3257 
3258  case 8: /* global: declaration */
3259 #line 759 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3260  {
3261  pips_debug(5, "declaration->global\n");
3262  csplit_is_external = 1; /* the variable is declared outside of any function */
3263  /* csplit_is_typedef = 0; */
3264  pips_debug(1, "Declaration is located between line %d and line %d\n", get_csplit_current_beginning(), csplit_line_number);
3265  /* Useless since it is dealt by csplit_copy()
3266  later */
3267  //csplit_append_to_compilation_unit(csplit_line_number, get_current_csplit_file_offset());
3268  if(!string_undefined_p((yyvsp[0].string))) {
3269  pips_debug(1, "Definition: \"%s\"\n", (yyvsp[0].string));
3270  free_partial_signature((yyvsp[0].string));
3271  }
3273  }
3274 #line 3275 "y.tab.c"
3275  break;
3276 
3277  case 9: /* global: function_def */
3278 #line 774 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3279  {
3280 
3281  /*SG: mechanism to prevent the generation of module for functions defined in standard header files
3282  it should never be the case, but it sometimes happen with inline functions */
3283  pips_debug(5, "function_def->global\n");
3284  csplit_is_external = 0; /* the variable is declared inside a function */
3285  pips_debug(1, "Function \"%s\" declaration and body are located between line %d and line %d\n",
3289  /* Hmm... It happens to early to gather
3290  following comments to its module... */
3300  }
3301 #line 3302 "y.tab.c"
3302  break;
3303 
3304  case 10: /* global: TK_ASM TK_LPAREN string_constant TK_RPAREN TK_SEMICOLON */
3305 #line 797 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3306  {
3308  }
3309 #line 3310 "y.tab.c"
3310  break;
3311 
3312  case 11: /* global: TK_PRAGMA attr */
3313 #line 801 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3314  {
3316  }
3317 #line 3318 "y.tab.c"
3318  break;
3319 
3320  case 12: /* global: TK_IDENT TK_LPAREN old_parameter_list_ne TK_RPAREN old_pardef_list TK_SEMICOLON */
3321 #line 808 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3322  {
3323  pips_internal_error("Not implemented yet\n");
3324  }
3325 #line 3326 "y.tab.c"
3326  break;
3327 
3328  case 13: /* global: TK_IDENT TK_LPAREN TK_RPAREN TK_SEMICOLON */
3329 #line 813 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3330  {
3331  pips_internal_error("Not implemented yet\n");
3332  }
3333 #line 3334 "y.tab.c"
3334  break;
3335 
3336  case 14: /* global: TK_AT_TRANSFORM TK_LBRACE global TK_RBRACE TK_IDENT TK_LBRACE globals TK_RBRACE */
3337 #line 818 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3338  {
3339  pips_internal_error("Not implemented yet\n");
3340  }
3341 #line 3342 "y.tab.c"
3342  break;
3343 
3344  case 15: /* global: TK_AT_TRANSFORMEXPR TK_LBRACE expression TK_RBRACE TK_IDENT TK_LBRACE expression TK_RBRACE */
3345 #line 823 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3346  {
3347  pips_internal_error("Not implemented yet\n");
3348  }
3349 #line 3350 "y.tab.c"
3350  break;
3351 
3352  case 16: /* global: location error TK_SEMICOLON */
3353 #line 827 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3354  {
3355  pips_user_error("Parse error: location error TK_SEMICOLON \n");
3356  }
3357 #line 3358 "y.tab.c"
3358  break;
3359 
3360  case 17: /* id_or_typename: TK_IDENT */
3361 #line 834 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3362  {
3363  (yyval.string)=new_signature(splitc_text);
3364  }
3365 #line 3366 "y.tab.c"
3366  break;
3367 
3368  case 18: /* id_or_typename: TK_NAMED_TYPE */
3369 #line 838 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3370  { (yyval.string)=new_signature(splitc_text);}
3371 #line 3372 "y.tab.c"
3372  break;
3373 
3374  case 19: /* id_or_typename: TK_AT_NAME TK_LPAREN TK_IDENT TK_RPAREN */
3375 #line 840 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3376  {
3377  csplit_parser_warning("CIL AT not implemented\n");
3378  (yyval.string) = build_signature(new_signature("at_name"), new_lparen(), new_signature((yyvsp[-1].string)),
3379  new_rparen(), NULL);
3380  }
3381 #line 3382 "y.tab.c"
3382  break;
3383 
3384  case 20: /* maybecomma: %empty */
3385 #line 848 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3386  { (yyval.string) =new_signature("");}
3387 #line 3388 "y.tab.c"
3388  break;
3389 
3390  case 21: /* maybecomma: TK_COMMA */
3391 #line 849 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3392  { (yyval.string) = new_comma();}
3393 #line 3394 "y.tab.c"
3394  break;
3395 
3396  case 22: /* expression: constant */
3397 #line 858 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3398  {
3399  (yyval.string) = (yyvsp[0].string);
3400  }
3401 #line 3402 "y.tab.c"
3402  break;
3403 
3404  case 23: /* expression: TK_IDENT */
3405 #line 862 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3406  {
3407  /* Elements in enum are symbolic constant which
3408  may appear in an array declaration. */
3409  (yyval.string) = new_signature((yyvsp[0].string));
3410  }
3411 #line 3412 "y.tab.c"
3412  break;
3413 
3414  case 24: /* expression: TK_SIZEOF expression */
3415 #line 868 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3416  {
3417  /* Can be used to dimemsion an argument */
3418  (yyval.string) = safe_build_signature(new_signature("sizeof"),
3419  (yyvsp[0].string), NULL);
3420  }
3421 #line 3422 "y.tab.c"
3422  break;
3423 
3424  case 25: /* expression: TK_SIZEOF TK_LPAREN type_name TK_RPAREN */
3425 #line 874 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3426  {
3427  (yyval.string) = safe_build_signature(new_signature("sizeof"),
3428  new_lparen(), (yyvsp[-1].string), new_rparen(),
3429  NULL);
3430  }
3431 #line 3432 "y.tab.c"
3432  break;
3433 
3434  case 26: /* expression: TK_ALIGNOF expression */
3435 #line 880 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3436  {
3437  free_partial_signature((yyvsp[0].string));
3438  (yyval.string) = string_undefined;
3439  }
3440 #line 3441 "y.tab.c"
3441  break;
3442 
3443  case 27: /* expression: TK_ALIGNOF TK_LPAREN type_name TK_RPAREN */
3444 #line 885 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3445  {
3446  free_partial_signature((yyvsp[-1].string));
3447  (yyval.string) = string_undefined;
3448  }
3449 #line 3450 "y.tab.c"
3450  break;
3451 
3452  case 28: /* expression: TK_PLUS expression */
3453 #line 890 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3454  {
3455  (yyval.string) = safe_build_signature(new_signature("+"), (yyvsp[0].string), NULL);
3456  }
3457 #line 3458 "y.tab.c"
3458  break;
3459 
3460  case 29: /* expression: TK_MINUS expression */
3461 #line 894 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3462  {
3463  (yyval.string) = safe_build_signature(new_signature("-"), (yyvsp[0].string), NULL);
3464  }
3465 #line 3466 "y.tab.c"
3466  break;
3467 
3468  case 30: /* expression: TK_STAR expression */
3469 #line 898 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3470  {
3471  (yyval.string) = safe_build_signature(new_signature("*"), (yyvsp[0].string), NULL);
3472  }
3473 #line 3474 "y.tab.c"
3474  break;
3475 
3476  case 31: /* expression: TK_AND expression */
3477 #line 902 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3478  {
3479  (yyval.string) = safe_build_signature(new_signature("&"), (yyvsp[0].string), NULL);
3480  }
3481 #line 3482 "y.tab.c"
3482  break;
3483 
3484  case 32: /* expression: TK_EXCLAM expression */
3485 #line 906 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3486  {
3487  (yyval.string) = safe_build_signature(new_signature("!"), (yyvsp[0].string), NULL);
3488  }
3489 #line 3490 "y.tab.c"
3490  break;
3491 
3492  case 33: /* expression: TK_TILDE expression */
3493 #line 910 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3494  {
3495  (yyval.string) = safe_build_signature(new_signature("~"), (yyvsp[0].string), NULL);
3496  }
3497 #line 3498 "y.tab.c"
3498  break;
3499 
3500  case 34: /* expression: TK_PLUS_PLUS expression */
3501 #line 914 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3502  {
3503  (yyval.string) = safe_build_signature(new_signature("++"), (yyvsp[0].string), NULL);
3504  }
3505 #line 3506 "y.tab.c"
3506  break;
3507 
3508  case 35: /* expression: expression TK_PLUS_PLUS */
3509 #line 918 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3510  {
3511  (yyval.string) = safe_build_signature((yyvsp[-1].string), new_signature("++"), NULL);
3512  }
3513 #line 3514 "y.tab.c"
3514  break;
3515 
3516  case 36: /* expression: TK_MINUS_MINUS expression */
3517 #line 922 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3518  {
3519  (yyval.string) = safe_build_signature(new_signature("--"), (yyvsp[0].string), NULL);
3520  }
3521 #line 3522 "y.tab.c"
3522  break;
3523 
3524  case 37: /* expression: expression TK_MINUS_MINUS */
3525 #line 926 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3526  {
3527  (yyval.string) = safe_build_signature((yyvsp[-1].string), new_signature("--"), NULL);
3528  }
3529 #line 3530 "y.tab.c"
3530  break;
3531 
3532  case 38: /* expression: expression TK_ARROW id_or_typename */
3533 #line 930 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3534  {
3535  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("->"), (yyvsp[0].string), NULL);
3536  }
3537 #line 3538 "y.tab.c"
3538  break;
3539 
3540  case 39: /* expression: expression TK_DOT id_or_typename */
3541 #line 934 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3542  {
3543  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("."), (yyvsp[0].string), NULL);
3544  }
3545 #line 3546 "y.tab.c"
3546  break;
3547 
3548  case 40: /* expression: TK_LPAREN block TK_RPAREN */
3549 #line 938 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3550  {
3551  (yyval.string) = string_undefined;
3552  /* $$ = new_signature("block"); */
3553  }
3554 #line 3555 "y.tab.c"
3555  break;
3556 
3557  case 41: /* expression: paren_comma_expression */
3558 #line 943 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3559  {
3560  (yyval.string) = (yyvsp[0].string);
3561  }
3562 #line 3563 "y.tab.c"
3563  break;
3564 
3565  case 42: /* expression: expression TK_LPAREN arguments TK_RPAREN */
3566 #line 947 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3567  {
3568  free_partial_signature((yyvsp[-3].string));
3569  /* arguments does not return anything. */
3570  (yyval.string) = string_undefined;
3571  }
3572 #line 3573 "y.tab.c"
3573  break;
3574 
3575  case 43: /* expression: TK_BUILTIN_VA_ARG TK_LPAREN expression TK_COMMA type_name TK_RPAREN */
3576 #line 953 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3577  {
3578  free_partial_signature((yyvsp[-3].string));
3579  free_partial_signature((yyvsp[-1].string));
3580  (yyval.string) = string_undefined;
3581  }
3582 #line 3583 "y.tab.c"
3583  break;
3584 
3585  case 44: /* expression: expression bracket_comma_expression */
3586 #line 959 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3587  {
3588  free_partial_signature((yyvsp[-1].string));
3589  /* bracket_comma_expression does not return anything. */
3590  (yyval.string) = string_undefined;
3591  }
3592 #line 3593 "y.tab.c"
3593  break;
3594 
3595  case 45: /* expression: expression TK_QUEST opt_expression TK_COLON expression */
3596 #line 965 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3597  {
3598  //free_partial_signature($1);
3599  /* opt_expression does not return anything. */
3600  //free_partial_signature($5);
3601  //$$ = string_undefined;
3602  (yyval.string) = safe_build_signature((yyvsp[-4].string),
3603  new_signature("?"),
3604  (yyvsp[-2].string),
3605  new_signature(":"),
3606  (yyvsp[0].string), NULL);
3607  }
3608 #line 3609 "y.tab.c"
3609  break;
3610 
3611  case 46: /* expression: expression TK_PLUS expression */
3612 #line 977 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3613  {
3614  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("+"), (yyvsp[0].string), NULL);
3615  }
3616 #line 3617 "y.tab.c"
3617  break;
3618 
3619  case 47: /* expression: expression TK_MINUS expression */
3620 #line 981 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3621  {
3622  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("-"), (yyvsp[0].string), NULL);
3623  }
3624 #line 3625 "y.tab.c"
3625  break;
3626 
3627  case 48: /* expression: expression TK_STAR expression */
3628 #line 985 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3629  {
3630  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("*"), (yyvsp[0].string), NULL);
3631  }
3632 #line 3633 "y.tab.c"
3633  break;
3634 
3635  case 49: /* expression: expression TK_SLASH expression */
3636 #line 989 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3637  {
3638  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("/"), (yyvsp[0].string), NULL);
3639  }
3640 #line 3641 "y.tab.c"
3641  break;
3642 
3643  case 50: /* expression: expression TK_PERCENT expression */
3644 #line 993 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3645  {
3646  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("%"), (yyvsp[0].string), NULL);
3647  }
3648 #line 3649 "y.tab.c"
3649  break;
3650 
3651  case 51: /* expression: expression TK_AND_AND expression */
3652 #line 997 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3653  {
3654  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("&&"), (yyvsp[0].string), NULL);
3655  }
3656 #line 3657 "y.tab.c"
3657  break;
3658 
3659  case 52: /* expression: expression TK_PIPE_PIPE expression */
3660 #line 1001 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3661  {
3662  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("||"), (yyvsp[0].string), NULL);
3663  }
3664 #line 3665 "y.tab.c"
3665  break;
3666 
3667  case 53: /* expression: expression TK_AND expression */
3668 #line 1005 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3669  {
3670  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("&"), (yyvsp[0].string), NULL);
3671  }
3672 #line 3673 "y.tab.c"
3673  break;
3674 
3675  case 54: /* expression: expression TK_PIPE expression */
3676 #line 1009 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3677  {
3678  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("|"), (yyvsp[0].string), NULL);
3679  }
3680 #line 3681 "y.tab.c"
3681  break;
3682 
3683  case 55: /* expression: expression TK_CIRC expression */
3684 #line 1013 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3685  {
3686  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("^"), (yyvsp[0].string), NULL);
3687  }
3688 #line 3689 "y.tab.c"
3689  break;
3690 
3691  case 56: /* expression: expression TK_EQ_EQ expression */
3692 #line 1017 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3693  {
3694  //free_partial_signature($1);
3695  //free_partial_signature($3);
3696  //$$ = string_undefined;
3697  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("=="), (yyvsp[0].string), NULL);
3698  }
3699 #line 3700 "y.tab.c"
3700  break;
3701 
3702  case 57: /* expression: expression TK_EXCLAM_EQ expression */
3703 #line 1024 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3704  {
3705  //free_partial_signature($1);
3706  //free_partial_signature($3);
3707  //$$ = string_undefined;
3708  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("!="), (yyvsp[0].string), NULL);
3709  }
3710 #line 3711 "y.tab.c"
3711  break;
3712 
3713  case 58: /* expression: expression TK_INF expression */
3714 #line 1031 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3715  {
3716  //free_partial_signature($1);
3717  //free_partial_signature($3);
3718  //$$ = string_undefined;
3719  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("<"), (yyvsp[0].string), NULL);
3720  }
3721 #line 3722 "y.tab.c"
3722  break;
3723 
3724  case 59: /* expression: expression TK_SUP expression */
3725 #line 1038 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3726  {
3727  //free_partial_signature($1);
3728  //free_partial_signature($3);
3729  //$$ = string_undefined;
3730  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature(">"), (yyvsp[0].string), NULL);
3731  }
3732 #line 3733 "y.tab.c"
3733  break;
3734 
3735  case 60: /* expression: expression TK_INF_EQ expression */
3736 #line 1045 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3737  {
3738  //free_partial_signature($1);
3739  //free_partial_signature($3);
3740  //$$ = string_undefined;
3741  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("<="), (yyvsp[0].string), NULL);
3742  }
3743 #line 3744 "y.tab.c"
3744  break;
3745 
3746  case 61: /* expression: expression TK_SUP_EQ expression */
3747 #line 1052 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3748  {
3749  //free_partial_signature($1);
3750  //free_partial_signature($3);
3751  //$$ = string_undefined;
3752  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature(">="), (yyvsp[0].string), NULL);
3753  }
3754 #line 3755 "y.tab.c"
3755  break;
3756 
3757  case 62: /* expression: expression TK_INF_INF expression */
3758 #line 1059 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3759  {
3760  //free_partial_signature($1);
3761  //free_partial_signature($3);
3762  //$$ = string_undefined;
3763  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature("<<"), (yyvsp[0].string), NULL);
3764  }
3765 #line 3766 "y.tab.c"
3766  break;
3767 
3768  case 63: /* expression: expression TK_SUP_SUP expression */
3769 #line 1066 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3770  {
3771  //free_partial_signature($1);
3772  //free_partial_signature($3);
3773  //$$ = string_undefined;
3774  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_signature(">>"), (yyvsp[0].string), NULL);
3775  }
3776 #line 3777 "y.tab.c"
3777  break;
3778 
3779  case 64: /* expression: expression TK_EQ expression */
3780 #line 1073 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3781  {
3782  free_partial_signature((yyvsp[-2].string));
3783  free_partial_signature((yyvsp[0].string));
3784  (yyval.string) = string_undefined;
3785  }
3786 #line 3787 "y.tab.c"
3787  break;
3788 
3789  case 65: /* expression: expression TK_PLUS_EQ expression */
3790 #line 1079 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3791  {
3792  free_partial_signature((yyvsp[-2].string));
3793  free_partial_signature((yyvsp[0].string));
3794  (yyval.string) = string_undefined;
3795  }
3796 #line 3797 "y.tab.c"
3797  break;
3798 
3799  case 66: /* expression: expression TK_MINUS_EQ expression */
3800 #line 1085 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3801  {
3802  free_partial_signature((yyvsp[-2].string));
3803  free_partial_signature((yyvsp[0].string));
3804  (yyval.string) = string_undefined;
3805  }
3806 #line 3807 "y.tab.c"
3807  break;
3808 
3809  case 67: /* expression: expression TK_STAR_EQ expression */
3810 #line 1091 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3811  {
3812  free_partial_signature((yyvsp[-2].string));
3813  free_partial_signature((yyvsp[0].string));
3814  (yyval.string) = string_undefined;
3815  }
3816 #line 3817 "y.tab.c"
3817  break;
3818 
3819  case 68: /* expression: expression TK_SLASH_EQ expression */
3820 #line 1097 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3821  {
3822  free_partial_signature((yyvsp[-2].string));
3823  free_partial_signature((yyvsp[0].string));
3824  (yyval.string) = string_undefined;
3825  }
3826 #line 3827 "y.tab.c"
3827  break;
3828 
3829  case 69: /* expression: expression TK_PERCENT_EQ expression */
3830 #line 1103 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3831  {
3832  free_partial_signature((yyvsp[-2].string));
3833  free_partial_signature((yyvsp[0].string));
3834  (yyval.string) = string_undefined;
3835  }
3836 #line 3837 "y.tab.c"
3837  break;
3838 
3839  case 70: /* expression: expression TK_AND_EQ expression */
3840 #line 1109 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3841  {
3842  free_partial_signature((yyvsp[-2].string));
3843  free_partial_signature((yyvsp[0].string));
3844  (yyval.string) = string_undefined;
3845  }
3846 #line 3847 "y.tab.c"
3847  break;
3848 
3849  case 71: /* expression: expression TK_PIPE_EQ expression */
3850 #line 1115 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3851  {
3852  free_partial_signature((yyvsp[-2].string));
3853  free_partial_signature((yyvsp[0].string));
3854  (yyval.string) = string_undefined;
3855  }
3856 #line 3857 "y.tab.c"
3857  break;
3858 
3859  case 72: /* expression: expression TK_CIRC_EQ expression */
3860 #line 1121 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3861  {
3862  free_partial_signature((yyvsp[-2].string));
3863  free_partial_signature((yyvsp[0].string));
3864  (yyval.string) = string_undefined;
3865  }
3866 #line 3867 "y.tab.c"
3867  break;
3868 
3869  case 73: /* expression: expression TK_INF_INF_EQ expression */
3870 #line 1127 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3871  {
3872  free_partial_signature((yyvsp[-2].string));
3873  free_partial_signature((yyvsp[0].string));
3874  (yyval.string) = string_undefined;
3875  }
3876 #line 3877 "y.tab.c"
3877  break;
3878 
3879  case 74: /* expression: expression TK_SUP_SUP_EQ expression */
3880 #line 1133 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3881  {
3882  free_partial_signature((yyvsp[-2].string));
3883  free_partial_signature((yyvsp[0].string));
3884  (yyval.string) = string_undefined;
3885  }
3886 #line 3887 "y.tab.c"
3887  break;
3888 
3889  case 75: /* expression: TK_LPAREN type_name TK_RPAREN expression */
3890 #line 1139 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3891  {
3892  free_partial_signature((yyvsp[-2].string));
3893  free_partial_signature((yyvsp[0].string));
3894  (yyval.string) = string_undefined;
3895  }
3896 #line 3897 "y.tab.c"
3897  break;
3898 
3899  case 76: /* expression: TK_LPAREN type_name TK_RPAREN TK_LBRACE initializer_list_opt TK_RBRACE */
3900 #line 1146 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3901  {
3902  free_partial_signature((yyvsp[-4].string));
3903  /* initializer_list_opt does not return anything. */
3904  (yyval.string) = string_undefined;
3905  }
3906 #line 3907 "y.tab.c"
3907  break;
3908 
3909  case 77: /* expression: TK_AND_AND TK_IDENT */
3910 #line 1153 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3911  {
3912  (yyval.string) = string_undefined;
3913  }
3914 #line 3915 "y.tab.c"
3915  break;
3916 
3917  case 78: /* expression: TK_AT_EXPR TK_LPAREN TK_IDENT TK_RPAREN */
3918 #line 1157 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3919  {
3920  (yyval.string) = string_undefined;
3921  }
3922 #line 3923 "y.tab.c"
3923  break;
3924 
3925  case 79: /* constant: TK_INTCON */
3926 #line 1166 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3927  {
3928  (yyval.string) = new_signature((yyvsp[0].string));
3929  }
3930 #line 3931 "y.tab.c"
3931  break;
3932 
3933  case 80: /* constant: TK_FLOATCON */
3934 #line 1170 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3935  {
3936  (yyval.string) = string_undefined;
3937  }
3938 #line 3939 "y.tab.c"
3939  break;
3940 
3941  case 81: /* constant: TK_COMPLEXCON */
3942 #line 1174 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3943  {
3944  (yyval.string) = string_undefined;
3945  }
3946 #line 3947 "y.tab.c"
3947  break;
3948 
3949  case 82: /* constant: TK_CHARCON */
3950 #line 1178 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3951  {
3952  (yyval.string) = string_undefined;
3953  }
3954 #line 3955 "y.tab.c"
3955  break;
3956 
3957  case 83: /* constant: string_constant */
3958 #line 1182 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3959  {
3960  (yyval.string) = string_undefined;
3961  }
3962 #line 3963 "y.tab.c"
3963  break;
3964 
3965  case 84: /* constant: wstring_list */
3966 #line 1188 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3967  {
3968  (yyval.string) = string_undefined;
3969  }
3970 #line 3971 "y.tab.c"
3971  break;
3972 
3973  case 85: /* string_constant: string_list */
3974 #line 1197 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3975  {
3976  }
3977 #line 3978 "y.tab.c"
3978  break;
3979 
3980  case 86: /* one_string_constant: TK_STRINGCON */
3981 #line 1203 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3982  {}
3983 #line 3984 "y.tab.c"
3984  break;
3985 
3986  case 87: /* string_list: one_string */
3987 #line 1207 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3988  {
3989  }
3990 #line 3991 "y.tab.c"
3991  break;
3992 
3993  case 88: /* string_list: string_list one_string */
3994 #line 1210 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
3995  {
3996  }
3997 #line 3998 "y.tab.c"
3998  break;
3999 
4000  case 89: /* wstring_list: TK_WSTRINGCON */
4001 #line 1216 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4002  {
4003  }
4004 #line 4005 "y.tab.c"
4005  break;
4006 
4007  case 90: /* wstring_list: wstring_list one_string */
4008 #line 1219 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4009  {
4010  }
4011 #line 4012 "y.tab.c"
4012  break;
4013 
4014  case 91: /* wstring_list: wstring_list TK_WSTRINGCON */
4015 #line 1222 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4016  {
4017  }
4018 #line 4019 "y.tab.c"
4019  break;
4020 
4021  case 92: /* one_string: TK_STRINGCON */
4022 #line 1228 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4023  { }
4024 #line 4025 "y.tab.c"
4025  break;
4026 
4027  case 93: /* one_string: TK_FUNCTION__ */
4028 #line 1230 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4029  { }
4030 #line 4031 "y.tab.c"
4031  break;
4032 
4033  case 94: /* one_string: TK_PRETTY_FUNCTION__ */
4034 #line 1232 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4035  { }
4036 #line 4037 "y.tab.c"
4037  break;
4038 
4039  case 95: /* init_expression: expression */
4040 #line 1236 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4041  { free_partial_signature((yyvsp[0].string));}
4042 #line 4043 "y.tab.c"
4043  break;
4044 
4045  case 96: /* init_expression: TK_LBRACE initializer_list_opt TK_RBRACE */
4046 #line 1238 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4047  { }
4048 #line 4049 "y.tab.c"
4049  break;
4050 
4051  case 97: /* initializer_list: initializer */
4052 #line 1242 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4053  {
4054  }
4055 #line 4056 "y.tab.c"
4056  break;
4057 
4058  case 98: /* initializer_list: initializer TK_COMMA initializer_list_opt */
4059 #line 1245 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4060  {
4061  }
4062 #line 4063 "y.tab.c"
4063  break;
4064 
4065  case 99: /* initializer_list_opt: %empty */
4066 #line 1249 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4067  { }
4068 #line 4069 "y.tab.c"
4069  break;
4070 
4071  case 100: /* initializer_list_opt: initializer_list */
4072 #line 1250 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4073  { }
4074 #line 4075 "y.tab.c"
4075  break;
4076 
4077  case 101: /* initializer: init_designators eq_opt init_expression */
4078 #line 1254 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4079  {
4080  }
4081 #line 4082 "y.tab.c"
4082  break;
4083 
4084  case 102: /* initializer: gcc_init_designators init_expression */
4085 #line 1257 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4086  {
4087  }
4088 #line 4089 "y.tab.c"
4089  break;
4090 
4091  case 103: /* initializer: init_expression */
4092 #line 1259 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4093  { }
4094 #line 4095 "y.tab.c"
4095  break;
4096 
4097  case 104: /* eq_opt: TK_EQ */
4098 #line 1263 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4099  { }
4100 #line 4101 "y.tab.c"
4101  break;
4102 
4103  case 105: /* eq_opt: %empty */
4104 #line 1266 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4105  {
4106  }
4107 #line 4108 "y.tab.c"
4108  break;
4109 
4110  case 106: /* init_designators: TK_DOT id_or_typename init_designators_opt */
4111 #line 1271 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4112  { }
4113 #line 4114 "y.tab.c"
4114  break;
4115 
4116  case 107: /* init_designators: TK_LBRACKET expression TK_RBRACKET init_designators_opt */
4117 #line 1273 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4118  { free_partial_signature((yyvsp[-2].string)); }
4119 #line 4120 "y.tab.c"
4120  break;
4121 
4122  case 108: /* init_designators: TK_LBRACKET expression TK_ELLIPSIS expression TK_RBRACKET */
4123 #line 1275 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4124  { free_partial_signature((yyvsp[-3].string)); free_partial_signature((yyvsp[-1].string)); }
4125 #line 4126 "y.tab.c"
4126  break;
4127 
4128  case 109: /* init_designators_opt: %empty */
4129 #line 1278 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4130  { }
4131 #line 4132 "y.tab.c"
4132  break;
4133 
4134  case 110: /* init_designators_opt: init_designators */
4135 #line 1279 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4136  {}
4137 #line 4138 "y.tab.c"
4138  break;
4139 
4140  case 111: /* gcc_init_designators: id_or_typename TK_COLON */
4141 #line 1284 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4142  {
4143  }
4144 #line 4145 "y.tab.c"
4145  break;
4146 
4147  case 112: /* arguments: %empty */
4148 #line 1289 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4149  { }
4150 #line 4151 "y.tab.c"
4151  break;
4152 
4153  case 113: /* arguments: comma_expression */
4154 #line 1290 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4155  { free_partial_signature((yyvsp[0].string)); }
4156 #line 4157 "y.tab.c"
4157  break;
4158 
4159  case 114: /* opt_expression: %empty */
4160 #line 1295 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4161  { (yyval.string)=strdup(" ");}
4162 #line 4163 "y.tab.c"
4163  break;
4164 
4165  case 115: /* opt_expression: comma_expression */
4166 #line 1297 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4167  {
4168  //free_partial_signature($1);
4169  (yyval.string) = (yyvsp[0].string);
4170  }
4171 #line 4172 "y.tab.c"
4172  break;
4173 
4174  case 116: /* comma_expression: expression */
4175 #line 1305 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4176  {
4177  (yyval.string) = (yyvsp[0].string);
4178  }
4179 #line 4180 "y.tab.c"
4180  break;
4181 
4182  case 117: /* comma_expression: expression TK_COMMA comma_expression */
4183 #line 1309 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4184  {
4185  (yyval.string) = safe_build_signature((yyvsp[-2].string), new_comma(), (yyvsp[0].string), NULL);
4186  }
4187 #line 4188 "y.tab.c"
4188  break;
4189 
4190  case 118: /* comma_expression: error TK_COMMA comma_expression */
4191 #line 1313 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4192  {
4193  csplit_parser_error("within expression list.\n");
4194  (yyval.string) = string_undefined;
4195  }
4196 #line 4197 "y.tab.c"
4197  break;
4198 
4199  case 119: /* comma_expression_opt: %empty */
4200 #line 1320 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4201  { (yyval.string) = new_empty(); }
4202 #line 4203 "y.tab.c"
4203  break;
4204 
4205  case 120: /* comma_expression_opt: comma_expression */
4206 #line 1321 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4207  { (yyval.string) = (yyvsp[0].string); }
4208 #line 4209 "y.tab.c"
4209  break;
4210 
4211  case 121: /* paren_comma_expression: TK_LPAREN comma_expression TK_RPAREN */
4212 #line 1326 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4213  {
4214  (yyval.string) = safe_build_signature(new_lparen(), (yyvsp[-1].string),
4215  new_rparen(), NULL);
4216  }
4217 #line 4218 "y.tab.c"
4218  break;
4219 
4220  case 122: /* paren_comma_expression: TK_LPAREN error TK_RPAREN */
4221 #line 1331 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4222  {
4223  csplit_parser_error("Error within parenthesized expression.\n");
4224  (yyval.string) = string_undefined;
4225  }
4226 #line 4227 "y.tab.c"
4227  break;
4228 
4229  case 123: /* bracket_comma_expression: TK_LBRACKET comma_expression TK_RBRACKET */
4230 #line 1339 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4231  {
4232  free_partial_signature((yyvsp[-1].string));
4233  }
4234 #line 4235 "y.tab.c"
4235  break;
4236 
4237  case 124: /* bracket_comma_expression: TK_LBRACKET error TK_RBRACKET */
4238 #line 1343 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4239  {
4240  }
4241 #line 4242 "y.tab.c"
4242  break;
4243 
4244  case 125: /* $@1: %empty */
4245 #line 1349 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4247 #line 4248 "y.tab.c"
4248  break;
4249 
4250  case 126: /* $@2: %empty */
4251 #line 1349 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4253 #line 4254 "y.tab.c"
4254  break;
4255 
4256  case 127: /* block: TK_LBRACE $@1 local_labels block_attrs declaration_list statement_list $@2 TK_RBRACE */
4257 #line 1350 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4258  {
4259  pips_debug(5, "block found at line %d\n",
4261  }
4262 #line 4263 "y.tab.c"
4263  break;
4264 
4265  case 128: /* block: error location TK_RBRACE */
4266 #line 1355 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4267  { }
4268 #line 4269 "y.tab.c"
4269  break;
4270 
4271  case 129: /* block_attrs: %empty */
4272 #line 1359 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4273  {}
4274 #line 4275 "y.tab.c"
4275  break;
4276 
4277  case 130: /* block_attrs: TK_BLOCKATTRIBUTE paren_attr_list_ne */
4278 #line 1361 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4279  { }
4280 #line 4281 "y.tab.c"
4281  break;
4282 
4283  case 131: /* declaration_list: %empty */
4284 #line 1365 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4285  { }
4286 #line 4287 "y.tab.c"
4287  break;
4288 
4289  case 132: /* declaration_list: declaration declaration_list */
4290 #line 1367 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4291  {
4292  }
4293 #line 4294 "y.tab.c"
4294  break;
4295 
4296  case 133: /* statement_list: %empty */
4297 #line 1372 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4298  { }
4299 #line 4300 "y.tab.c"
4300  break;
4301 
4302  case 134: /* statement_list: statement statement_list */
4303 #line 1374 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4304  {
4305  }
4306 #line 4307 "y.tab.c"
4307  break;
4308 
4309  case 135: /* statement_list: TK_IDENT TK_COLON */
4310 #line 1377 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4311  { }
4312 #line 4313 "y.tab.c"
4313  break;
4314 
4315  case 136: /* local_labels: %empty */
4316 #line 1381 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4317  {}
4318 #line 4319 "y.tab.c"
4319  break;
4320 
4321  case 137: /* local_labels: TK_LABEL__ local_label_names TK_SEMICOLON local_labels */
4322 #line 1383 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4323  { }
4324 #line 4325 "y.tab.c"
4325  break;
4326 
4327  case 138: /* local_label_names: TK_IDENT */
4328 #line 1387 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4329  {}
4330 #line 4331 "y.tab.c"
4331  break;
4332 
4333  case 139: /* local_label_names: TK_IDENT TK_COMMA local_label_names */
4334 #line 1388 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4335  {}
4336 #line 4337 "y.tab.c"
4337  break;
4338 
4339  case 140: /* statement: TK_SEMICOLON */
4340 #line 1393 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4341  {
4342  }
4343 #line 4344 "y.tab.c"
4344  break;
4345 
4346  case 141: /* statement: comma_expression TK_SEMICOLON */
4347 #line 1396 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4348  {
4349  free_partial_signature((yyvsp[-1].string));
4350  }
4351 #line 4352 "y.tab.c"
4352  break;
4353 
4354  case 142: /* statement: block */
4355 #line 1399 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4356  { }
4357 #line 4358 "y.tab.c"
4358  break;
4359 
4360  case 143: /* statement: TK_IF paren_comma_expression statement */
4361 #line 1401 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4362  {
4363  free_partial_signature((yyvsp[-1].string));
4364  }
4365 #line 4366 "y.tab.c"
4366  break;
4367 
4368  case 144: /* statement: TK_IF paren_comma_expression statement TK_ELSE statement */
4369 #line 1405 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4370  {
4371  free_partial_signature((yyvsp[-3].string));
4372  }
4373 #line 4374 "y.tab.c"
4374  break;
4375 
4376  case 145: /* $@3: %empty */
4377 #line 1409 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4378  {
4379  }
4380 #line 4381 "y.tab.c"
4381  break;
4382 
4383  case 146: /* $@4: %empty */
4384 #line 1412 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4385  {
4386  /* free_partial_signature($1); */
4387  }
4388 #line 4389 "y.tab.c"
4389  break;
4390 
4391  case 147: /* statement: TK_SWITCH $@3 paren_comma_expression $@4 statement */
4392 #line 1416 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4393  {
4394  }
4395 #line 4396 "y.tab.c"
4396  break;
4397 
4398  case 148: /* $@5: %empty */
4399 #line 1419 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4400  {
4401  }
4402 #line 4403 "y.tab.c"
4403  break;
4404 
4405  case 149: /* statement: TK_WHILE $@5 paren_comma_expression statement */
4406 #line 1422 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4407  {
4408  /* free_partial_signature($1); */
4409  }
4410 #line 4411 "y.tab.c"
4411  break;
4412 
4413  case 150: /* $@6: %empty */
4414 #line 1426 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4415  {
4416  }
4417 #line 4418 "y.tab.c"
4418  break;
4419 
4420  case 151: /* statement: TK_DO $@6 statement TK_WHILE paren_comma_expression TK_SEMICOLON */
4421 #line 1429 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4422  {
4423  /* free_partial_signature($3); */
4424  }
4425 #line 4426 "y.tab.c"
4426  break;
4427 
4428  case 152: /* $@7: %empty */
4429 #line 1433 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4430  {
4431  }
4432 #line 4433 "y.tab.c"
4433  break;
4434 
4435  case 153: /* statement: TK_FOR $@7 TK_LPAREN for_clause */
4436 #line 1436 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4437  {
4438  }
4439 #line 4440 "y.tab.c"
4440  break;
4441 
4442  case 154: /* statement: TK_IDENT TK_COLON statement */
4443 #line 1439 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4444  {
4445  }
4446 #line 4447 "y.tab.c"
4447  break;
4448 
4449  case 155: /* statement: TK_CASE expression TK_COLON */
4450 #line 1442 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4451  {
4452  free_partial_signature((yyvsp[-1].string));
4453  }
4454 #line 4455 "y.tab.c"
4455  break;
4456 
4457  case 156: /* statement: TK_CASE expression TK_ELLIPSIS expression TK_COLON */
4458 #line 1446 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4459  {
4460  free_partial_signature((yyvsp[-3].string));
4461  free_partial_signature((yyvsp[-1].string));
4462  }
4463 #line 4464 "y.tab.c"
4464  break;
4465 
4466  case 157: /* statement: TK_DEFAULT TK_COLON */
4467 #line 1451 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4468  {
4469  }
4470 #line 4471 "y.tab.c"
4471  break;
4472 
4473  case 158: /* statement: TK_RETURN TK_SEMICOLON */
4474 #line 1454 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4475  {
4476  }
4477 #line 4478 "y.tab.c"
4478  break;
4479 
4480  case 159: /* statement: TK_RETURN comma_expression TK_SEMICOLON */
4481 #line 1457 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4482  {
4483  free_partial_signature((yyvsp[-1].string));
4484  }
4485 #line 4486 "y.tab.c"
4486  break;
4487 
4488  case 160: /* statement: TK_BREAK TK_SEMICOLON */
4489 #line 1461 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4490  {
4491  }
4492 #line 4493 "y.tab.c"
4493  break;
4494 
4495  case 161: /* statement: TK_CONTINUE TK_SEMICOLON */
4496 #line 1464 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4497  {
4498  }
4499 #line 4500 "y.tab.c"
4500  break;
4501 
4502  case 162: /* statement: TK_GOTO TK_IDENT TK_SEMICOLON */
4503 #line 1467 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4504  {
4505  }
4506 #line 4507 "y.tab.c"
4507  break;
4508 
4509  case 163: /* statement: TK_GOTO TK_STAR comma_expression TK_SEMICOLON */
4510 #line 1470 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4511  {
4512  free_partial_signature((yyvsp[-1].string));
4513  }
4514 #line 4515 "y.tab.c"
4515  break;
4516 
4517  case 164: /* statement: TK_ASM asmattr TK_LPAREN asmtemplate asmoutputs TK_RPAREN TK_SEMICOLON */
4518 #line 1474 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4519  { }
4520 #line 4521 "y.tab.c"
4521  break;
4522 
4523  case 165: /* statement: TK_MSASM */
4524 #line 1476 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4525  { }
4526 #line 4527 "y.tab.c"
4527  break;
4528 
4529  case 166: /* statement: declaration */
4530 #line 1478 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4531  { /* In C99 we can have declarations everywhere... */ }
4532 #line 4533 "y.tab.c"
4533  break;
4534 
4535  case 167: /* statement: error location TK_SEMICOLON */
4536 #line 1480 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4537  {
4538  }
4539 #line 4540 "y.tab.c"
4540  break;
4541 
4542  case 168: /* for_clause: opt_expression TK_SEMICOLON opt_expression TK_SEMICOLON opt_expression TK_RPAREN statement */
4543 #line 1486 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4544  {
4545  }
4546 #line 4547 "y.tab.c"
4547  break;
4548 
4549  case 169: /* for_clause: declaration opt_expression TK_SEMICOLON opt_expression TK_RPAREN statement */
4550 #line 1489 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4551  {
4552  }
4553 #line 4554 "y.tab.c"
4554  break;
4555 
4556  case 170: /* declaration: decl_spec_list init_declarator_list TK_SEMICOLON */
4557 #line 1495 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4558  {
4559  pips_debug(5, "decl_spec_list init_declarator_list TK_SEMICOLON -> declaration\n");
4560  pips_debug(5, "decl_spec_list=\"%s\", init_declarator_list=\"%s\"\n",
4561  (yyvsp[-2].string), string_undefined_p((yyvsp[-1].string)) ? "UNDEFINED" : (yyvsp[-1].string));
4562  csplit_is_function = 0; /* not function's declaration */
4563  //pips_assert("TypedefStack is empty", stack_empty_p(TypedefStack));
4564  csplit_is_typedef = false;
4565  free_partial_signature((yyvsp[-2].string));
4566  free_partial_signature((yyvsp[-1].string));
4567  (yyval.string) = string_undefined;
4568  PopTypedef();
4569  }
4570 #line 4571 "y.tab.c"
4571  break;
4572 
4573  case 171: /* declaration: decl_spec_list TK_SEMICOLON */
4574 #line 1508 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4575  {
4576  pips_debug(5, "decl_spec_list TK_SEMICOLON -> declaration\n");
4577  pips_debug(5, "decl_spec_list=\"%s\"\n", (yyvsp[-1].string));
4578  csplit_is_function = 0; /* not function's declaration */
4579  //pips_assert("TypedefStack is empty", stack_empty_p(TypedefStack));
4580  csplit_is_typedef = false;
4581  free_partial_signature((yyvsp[-1].string));
4582  (yyval.string) = string_undefined;
4583  PopTypedef();
4584  }
4585 #line 4586 "y.tab.c"
4586  break;
4587 
4588  case 172: /* init_declarator_list: init_declarator */
4589 #line 1522 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4590  {
4591  (yyval.string) = string_undefined;
4592  }
4593 #line 4594 "y.tab.c"
4594  break;
4595 
4596  case 173: /* init_declarator_list: init_declarator TK_COMMA init_declarator_list */
4597 #line 1526 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4598  {
4599  (yyval.string) = string_undefined;
4600  }
4601 #line 4602 "y.tab.c"
4602  break;
4603 
4604  case 174: /* init_declarator: declarator */
4605 #line 1532 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4606  {
4607  (yyval.string) = string_undefined;
4608  }
4609 #line 4610 "y.tab.c"
4610  break;
4611 
4612  case 175: /* init_declarator: declarator TK_EQ init_expression */
4613 #line 1536 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4614  {
4615  (yyval.string) = string_undefined;
4616  }
4617 #line 4618 "y.tab.c"
4618  break;
4619 
4620  case 176: /* decl_spec_list: TK_TYPEDEF decl_spec_list_opt */
4621 #line 1551 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4622  {
4623  pips_debug(5, "TK_TYPEDEF decl_spec_list_opt->decl_spec_list\n");
4624  csplit_is_typedef = true;
4625  pips_debug(8, "csplit_is_typedef=%s\n", bool_to_string(csplit_is_typedef));
4626  /* I would have liked not to build them when unnecessary. */
4627  /*
4628  free_partial_signature($2);
4629  $$ = string_undefined;
4630  */
4631  (yyval.string) = build_signature(new_signature("typedef"), (yyvsp[0].string), NULL);
4632  }
4633 #line 4634 "y.tab.c"
4634  break;
4635 
4636  case 177: /* decl_spec_list: TK_EXTERN decl_spec_list_opt */
4637 #line 1563 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4638  {
4639  pips_debug(5, "TK_EXTERN decl_spec_list_opt->decl_spec_list\n");
4640  /*
4641  free_partial_signature($2);
4642  $$ = string_undefined;
4643  */
4644  (yyval.string) = build_signature(new_signature("extern"), (yyvsp[0].string), NULL);
4645  }
4646 #line 4647 "y.tab.c"
4647  break;
4648 
4649  case 178: /* decl_spec_list: TK_STATIC decl_spec_list_opt */
4650 #line 1572 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4651  {
4652  /* There are 3 cases: static function, external and internal static variable*/
4653  pips_debug(5, "TK_STATIC decl_spec_list_opt->decl_spec_list\n");
4654  csplit_is_static_p = true;
4655  if (!csplit_is_function) {
4656  pips_debug(5, "We are not within a function, so this STATIC may be related to a function: %s.\n", (yyvsp[0].string));
4657  }
4658  (yyval.string) = build_signature(new_signature("static"), (yyvsp[0].string), NULL);
4659  }
4660 #line 4661 "y.tab.c"
4661  break;
4662 
4663  case 179: /* decl_spec_list: TK_AUTO decl_spec_list_opt */
4664 #line 1582 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4665  {
4666  pips_debug(5, "TK_AUTO decl_spec_list_opt->decl_spec_list\n");
4667  /*
4668  free_partial_signature($2);
4669  $$ = string_undefined;
4670  */
4671  (yyval.string) = build_signature(new_signature("auto"), (yyvsp[0].string), NULL);
4672  }
4673 #line 4674 "y.tab.c"
4674  break;
4675 
4676  case 180: /* decl_spec_list: TK_REGISTER decl_spec_list_opt */
4677 #line 1591 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4678  {
4679  pips_debug(5, "TK_REGISTER decl_spec_list_opt->decl_spec_list\n");
4680  /*
4681  free_partial_signature($2);
4682  $$ = string_undefined;
4683  */
4684  (yyval.string) = build_signature(new_signature("register"), (yyvsp[0].string), NULL);
4685  }
4686 #line 4687 "y.tab.c"
4687  break;
4688 
4689  case 181: /* decl_spec_list: TK_THREAD decl_spec_list_opt */
4690 #line 1600 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4691  {
4692  pips_debug(5, "TK_THREAD decl_spec_list_opt->decl_spec_list\n");
4693  /*
4694  free_partial_signature($2);
4695  $$ = string_undefined;
4696  */
4697  (yyval.string) = build_signature(new_signature("thread"), (yyvsp[0].string), NULL);
4698  }
4699 #line 4700 "y.tab.c"
4700  break;
4701 
4702  case 182: /* decl_spec_list: type_spec decl_spec_list_opt_no_named */
4703 #line 1610 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4704  {
4705  pips_debug(5, "type_spec and decl_spec_list_opt_no_named -> decl_spec_list\n");
4706  if(string_undefined_p((yyvsp[-1].string))) {
4707  pips_debug(5, "type_spec is undefined\n");
4708  if(!string_undefined_p((yyvsp[0].string))) {
4709  pips_debug(5, "Useless partial signature $2: %s\n", (yyvsp[0].string));
4710  free((yyvsp[0].string));
4711  }
4712  else
4713  pips_debug(5, "$1 and $2 undefined\n");
4714  (yyval.string) = string_undefined;
4715  }
4716  else {
4717  pips_debug(5, "Type spec: \"%s\"\n", (yyvsp[-1].string));
4718  (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL);
4719  pips_debug(5, "Partial signature: \"%s\"\n", (yyval.string));
4720  /* FI: might need a call to reset_csplit_current_function_name
4721  if(!string_undefined_p(csplit_current_function_name)
4722  && strcmp($2, csplit_current_function_name)==0) {
4723  csplit_current_function_name
4724  = csplit_current_function_name2;
4725  csplit_current_function_name2 = string_undefined;
4726  }
4727  */
4728  }
4729  }
4730 #line 4731 "y.tab.c"
4731  break;
4732 
4733  case 183: /* decl_spec_list: TK_INLINE decl_spec_list_opt */
4734 #line 1638 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4735  {
4736  pips_debug(5, "TK_INLINE decl_spec_list_opt->decl_spec_list\n");
4737  /*
4738  free_partial_signature($2);
4739  $$ = string_undefined;
4740  */
4741  (yyval.string) = build_signature(new_signature("inline"), (yyvsp[0].string), NULL);
4742  }
4743 #line 4744 "y.tab.c"
4744  break;
4745 
4746  case 184: /* decl_spec_list: attribute decl_spec_list_opt */
4747 #line 1647 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4748  {
4749  pips_debug(5, "attribute decl_spec_list_opt->decl_spec_list\n");
4750  /*
4751  free_partial_signature($1);
4752  free_partial_signature($2);
4753  $$ = string_undefined;
4754  */
4755  (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL);
4756  }
4757 #line 4758 "y.tab.c"
4758  break;
4759 
4760  case 185: /* decl_spec_list: TK_AT_SPECIFIER TK_LPAREN TK_IDENT TK_RPAREN */
4761 #line 1658 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4762  {
4763  pips_debug(5, "TK_AT_SPECIFIER TK_LPAREN TK_IDENT TK_RPAREN->decl_spec_list\n");
4764  /* $$ = string_undefined; */
4765  (yyval.string) = build_signature(new_signature("at specifier"),
4766  new_lparen(), new_signature((yyvsp[-1].string)),
4767  new_rparen(), NULL);
4768  }
4769 #line 4770 "y.tab.c"
4770  break;
4771 
4772  case 186: /* decl_spec_list_opt: %empty */
4773 #line 1670 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4774  { (yyval.string)=new_empty(); PushTypedef();}
4775 #line 4776 "y.tab.c"
4776  break;
4777 
4778  case 187: /* decl_spec_list_opt: decl_spec_list */
4779 #line 1671 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4780  { (yyval.string)=(yyvsp[0].string);}
4781 #line 4782 "y.tab.c"
4782  break;
4783 
4784  case 188: /* @8: %empty */
4785 #line 1679 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4786  {
4787  /* Cf "Actions in Mid-Rule" in the Bison doc. */
4788  (yyval.string) = new_empty();
4789  PushTypedef();
4790  free((yyval.string));
4791  }
4792 #line 4793 "y.tab.c"
4793  break;
4794 
4795  case 189: /* decl_spec_list_opt_no_named: @8 */
4796 #line 1686 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4797  {
4798  pips_debug(8, "empty TK_IDENT->decl_spec_list_opt_no_named\n");
4799  /* pips_debug(8, "TK_IDENT %s is discarded\n", $1); */
4800  /* free($1); */
4801  /* FI: I do not feel safe about this. */
4802  /* $$=strdup(splitc_text); */ /* FI: why not $1?*/
4803  /* $$ = strdup("IAmNotSure"); */
4804  (yyval.string) = new_empty();
4805  }
4806 #line 4807 "y.tab.c"
4807  break;
4808 
4809  case 190: /* decl_spec_list_opt_no_named: decl_spec_list */
4810 #line 1695 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4811  {
4812  pips_debug(8,
4813  "decl_spec_slit->decl_spec_list_opt_no_named\n");
4814  (yyval.string)=(yyvsp[0].string);
4815  }
4816 #line 4817 "y.tab.c"
4817  break;
4818 
4819  case 191: /* type_spec: TK_VOID */
4820 #line 1706 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4821  {
4822  pips_debug(8, "TK_VOID->type_spec\n");
4823  (yyval.string) = new_signature(splitc_text);
4824  }
4825 #line 4826 "y.tab.c"
4826  break;
4827 
4828  case 192: /* type_spec: TK_CHAR */
4829 #line 1711 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4830  {
4831  pips_debug(8, "TK_CHAR->type_spec\n");
4832  (yyval.string) = new_signature(splitc_text);
4833  }
4834 #line 4835 "y.tab.c"
4835  break;
4836 
4837  case 193: /* type_spec: TK_SHORT */
4838 #line 1716 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4839  {
4840  pips_debug(8, "TK_SHORT->type_spec\n");
4841  (yyval.string) = new_signature(splitc_text);
4842  }
4843 #line 4844 "y.tab.c"
4844  break;
4845 
4846  case 194: /* type_spec: TK_INT */
4847 #line 1721 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4848  {
4849  pips_debug(8, "TK_INT->type_spec\n");
4850  (yyval.string) = new_signature(splitc_text);
4851  }
4852 #line 4853 "y.tab.c"
4853  break;
4854 
4855  case 195: /* type_spec: TK_INT128 */
4856 #line 1726 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4857  {
4858  pips_debug(8, "TK_INT128->type_spec\n");
4859  (yyval.string) = new_signature(splitc_text);
4860  }
4861 #line 4862 "y.tab.c"
4862  break;
4863 
4864  case 196: /* type_spec: TK_UINT128 */
4865 #line 1731 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4866  {
4867  pips_debug(8, "TK_UINT128->type_spec\n");
4868  (yyval.string) = new_signature(splitc_text);
4869  }
4870 #line 4871 "y.tab.c"
4871  break;
4872 
4873  case 197: /* type_spec: TK_COMPLEX */
4874 #line 1736 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4875  {
4876  pips_debug(8, "TK_COMPLEX->type_spec\n");
4877  (yyval.string) = new_signature(splitc_text);
4878  }
4879 #line 4880 "y.tab.c"
4880  break;
4881 
4882  case 198: /* type_spec: TK_LONG */
4883 #line 1741 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4884  {
4885  pips_debug(8, "TK_LONG->type_spec\n");
4886  (yyval.string) = new_signature(splitc_text);
4887  }
4888 #line 4889 "y.tab.c"
4889  break;
4890 
4891  case 199: /* type_spec: TK_FLOAT */
4892 #line 1746 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4893  {
4894  pips_debug(8, "TK_FLOAT->type_spec\n");
4895  (yyval.string) = new_signature(splitc_text);
4896  }
4897 #line 4898 "y.tab.c"
4898  break;
4899 
4900  case 200: /* type_spec: TK_DOUBLE */
4901 #line 1751 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4902  {
4903  pips_debug(8, "TK_DOUBLE->type_spec\n");
4904  (yyval.string) = new_signature(splitc_text);
4905  }
4906 #line 4907 "y.tab.c"
4907  break;
4908 
4909  case 201: /* type_spec: TK_SIGNED */
4910 #line 1756 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4911  {
4912  pips_debug(8, "TK_SIGNED->type_spec\n");
4913  (yyval.string) = new_signature(splitc_text);
4914  }
4915 #line 4916 "y.tab.c"
4916  break;
4917 
4918  case 202: /* type_spec: TK_UNSIGNED */
4919 #line 1761 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4920  {
4921  pips_debug(8, "TK_UNSIGNED->type_spec\n");
4922  (yyval.string) = new_signature(splitc_text);
4923  }
4924 #line 4925 "y.tab.c"
4925  break;
4926 
4927  case 203: /* type_spec: TK_STRUCT id_or_typename */
4928 #line 1766 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4929  {
4930  pips_debug(8, "TK_STRUCT id_or_typename->type_spec\n");
4931  /* FI: not clean, but the parser
4932  distinguishes between different kinds of
4933  ident and do not process them the same
4934  way. */
4936  && strcmp(csplit_current_function_name, (yyvsp[0].string))==0) {
4938  }
4939  (yyval.string) = build_signature(new_signature("struct"), (yyvsp[0].string), NULL);
4940  /* see reset_csplit_current_function_name()
4941  if(!string_undefined_p(csplit_current_function_name)
4942  && strcmp($2, csplit_current_function_name)==0) {
4943  csplit_current_function_name
4944  = csplit_current_function_name2;
4945  csplit_current_function_name2 = string_undefined;
4946  }
4947  */
4948  }
4949 #line 4950 "y.tab.c"
4950  break;
4951 
4952  case 204: /* type_spec: TK_STRUCT id_or_typename TK_LBRACE struct_decl_list TK_RBRACE */
4953 #line 1787 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4954  {
4955  pips_debug(8, "TK_STRUCT id_or_typename TK_LBRACE struct_decl_list"
4956  " TK_RBRACE->type_spec\n");
4957  /* FI: I do not understand the reset. I copy
4958  the guard from previous rule */
4960  && strcmp(csplit_current_function_name, (yyvsp[-3].string))==0) {
4962  }
4963  (yyval.string) = build_signature(new_signature("bstruct"), (yyvsp[-3].string), new_lbrace(), (yyvsp[-1].string),
4964  new_rbrace(), NULL);
4965  }
4966 #line 4967 "y.tab.c"
4967  break;
4968 
4969  case 205: /* type_spec: TK_STRUCT TK_LBRACE struct_decl_list TK_RBRACE */
4970 #line 1801 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4971  {
4972  pips_debug(8, "TK_STRUCT TK_LBRACE struct_decl_list TK_RBRACE->type_spec\n");
4973  (yyval.string) = build_signature(new_signature("struct"), new_lbrace(), (yyvsp[-1].string),
4974  new_rbrace(), NULL);
4975  }
4976 #line 4977 "y.tab.c"
4977  break;
4978 
4979  case 206: /* type_spec: TK_UNION id_or_typename */
4980 #line 1807 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4981  {
4982  pips_debug(8, "TK_UNION id_or_typename->type_spec\n");
4983  if(strcmp(csplit_current_function_name, (yyvsp[0].string))==0) {
4985  }
4986  (yyval.string) = build_signature(new_signature("union"), (yyvsp[0].string), NULL);
4987  }
4988 #line 4989 "y.tab.c"
4989  break;
4990 
4991  case 207: /* type_spec: TK_UNION id_or_typename TK_LBRACE struct_decl_list TK_RBRACE */
4992 #line 1815 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
4993  {
4994  pips_debug(8, "TK_UNION id_or_typename TK_LBRACE struct_decl_list TK_RBRACE->type_spec\n");
4995  if(strcmp(csplit_current_function_name, (yyvsp[-3].string))==0) {
4997  }
4998  (yyval.string) = build_signature(new_signature("union"), (yyvsp[-3].string), new_lbrace(), (yyvsp[-1].string),
4999  new_rbrace(), NULL);
5000  }
5001 #line 5002 "y.tab.c"
5002  break;
5003 
5004  case 208: /* type_spec: TK_UNION TK_LBRACE struct_decl_list TK_RBRACE */
5005 #line 1824 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5006  {
5007  pips_debug(8, "TK_UNION TK_LBRACE->type_spec\n");
5008  (yyval.string) = build_signature(new_signature("union"), new_lbrace(), (yyvsp[-1].string),
5009  new_rbrace(), NULL);
5010  }
5011 #line 5012 "y.tab.c"
5012  break;
5013 
5014  case 209: /* type_spec: TK_ENUM id_or_typename */
5015 #line 1830 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5016  {
5017  pips_debug(8, "TK_ENUM id_or_typename->type_spec\n");
5018  if(strcmp(csplit_current_function_name, (yyvsp[0].string))==0) {
5020  }
5021  (yyval.string) = build_signature(new_signature("enum"), (yyvsp[0].string), NULL);
5022  }
5023 #line 5024 "y.tab.c"
5024  break;
5025 
5026  case 210: /* type_spec: TK_ENUM id_or_typename TK_LBRACE enum_list maybecomma TK_RBRACE */
5027 #line 1838 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5028  {
5029  pips_debug(8, "TK_ENUM id_or_typename TK_LBRACE enum_list maybecomma TK_RBRACE->type_spec\n");
5030  if(strcmp(csplit_current_function_name, (yyvsp[-4].string))==0) {
5032  }
5033  (yyval.string) = build_signature(new_signature("enum"), (yyvsp[-4].string), new_lbrace(), (yyvsp[-2].string), (yyvsp[-1].string), new_rbrace(), NULL);
5034  }
5035 #line 5036 "y.tab.c"
5036  break;
5037 
5038  case 211: /* type_spec: TK_ENUM TK_LBRACE enum_list maybecomma TK_RBRACE */
5039 #line 1846 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5040  {
5041  pips_debug(8, "TK_ENUM TK_LBRACE enum_list maybecomma TK_RBRACE->type_spec\n");
5042  (yyval.string) = build_signature(new_signature("enum"), new_lbrace(), (yyvsp[-2].string), (yyvsp[-1].string), new_rbrace(), NULL);
5043  }
5044 #line 5045 "y.tab.c"
5045  break;
5046 
5047  case 212: /* type_spec: TK_NAMED_TYPE */
5048 #line 1851 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5049  {
5050  pips_debug(8, "TK_NAMED_TYPE->type_spec\n");
5051  (yyval.string) = new_signature((yyvsp[0].string));
5052  }
5053 #line 5054 "y.tab.c"
5054  break;
5055 
5056  case 213: /* type_spec: TK_TYPEOF TK_LPAREN expression TK_RPAREN */
5057 #line 1856 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5058  {
5059  pips_debug(8, "TK_TYPEOF TK_LPAREN expression TK_RPAREN->type_spec\n");
5060  (yyval.string) = build_signature(new_signature("typeof"), new_lparen(), new_signature("IDoNotWantToDealWithExpressions"), new_rparen(), NULL);
5061  }
5062 #line 5063 "y.tab.c"
5063  break;
5064 
5065  case 214: /* type_spec: TK_TYPEOF TK_LPAREN type_name TK_RPAREN */
5066 #line 1861 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5067  {
5068  pips_debug(8, "TK_TYPEOF TK_LPAREN type_name TK_RPAREN->type_spec\n");
5069  (yyval.string) = build_signature(new_signature("typeof"), new_lparen(), (yyvsp[-1].string), new_rparen(), NULL);;
5070  }
5071 #line 5072 "y.tab.c"
5072  break;
5073 
5074  case 215: /* struct_decl_list: %empty */
5075 #line 1870 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5076  { (yyval.string) = new_empty(); }
5077 #line 5078 "y.tab.c"
5078  break;
5079 
5080  case 216: /* struct_decl_list: decl_spec_list TK_SEMICOLON struct_decl_list */
5081 #line 1872 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5082  {
5083  PopTypedef();
5084  (yyval.string) = build_signature((yyvsp[-2].string), new_semicolon(), (yyvsp[0].string), NULL);
5085  }
5086 #line 5087 "y.tab.c"
5087  break;
5088 
5089  case 217: /* struct_decl_list: decl_spec_list field_decl_list TK_SEMICOLON struct_decl_list */
5090 #line 1878 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5091  {
5092  PopTypedef();
5093  (yyval.string) = build_signature((yyvsp[-3].string), (yyvsp[-2].string), new_semicolon(), (yyvsp[0].string), NULL);
5094  }
5095 #line 5096 "y.tab.c"
5096  break;
5097 
5098  case 218: /* struct_decl_list: error TK_SEMICOLON struct_decl_list */
5099 #line 1883 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5100  {
5101  csplit_parser_error("in struct declaration.");
5102  (yyval.string) = string_undefined;
5103  }
5104 #line 5105 "y.tab.c"
5105  break;
5106 
5107  case 219: /* field_decl_list: field_decl */
5108 #line 1891 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5109  {
5110  (yyval.string) = (yyvsp[0].string);
5111  }
5112 #line 5113 "y.tab.c"
5113  break;
5114 
5115  case 220: /* field_decl_list: field_decl TK_COMMA field_decl_list */
5116 #line 1895 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5117  {
5118  (yyval.string) = build_signature((yyvsp[-2].string), new_comma(), (yyvsp[0].string), NULL);
5119  }
5120 #line 5121 "y.tab.c"
5121  break;
5122 
5123  case 221: /* field_decl: declarator */
5124 #line 1901 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5125  { (yyval.string) = (yyvsp[0].string); }
5126 #line 5127 "y.tab.c"
5127  break;
5128 
5129  case 222: /* field_decl: declarator TK_COLON expression */
5130 #line 1903 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5131  {
5132  (yyval.string) = build_signature((yyvsp[-2].string), new_colon(), (yyvsp[0].string), NULL);
5133  }
5134 #line 5135 "y.tab.c"
5135  break;
5136 
5137  case 223: /* field_decl: TK_COLON expression */
5138 #line 1907 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5139  {
5140  (yyval.string) = build_signature(new_colon(), (yyvsp[0].string), NULL);
5141  }
5142 #line 5143 "y.tab.c"
5143  break;
5144 
5145  case 224: /* enum_list: enumerator */
5146 #line 1914 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5147  {
5148  (yyval.string) = (yyvsp[0].string);
5149  }
5150 #line 5151 "y.tab.c"
5151  break;
5152 
5153  case 225: /* enum_list: enum_list TK_COMMA enumerator */
5154 #line 1918 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5155  {
5156  (yyval.string) = build_signature((yyvsp[-2].string), new_comma(), (yyvsp[0].string), NULL);
5157  }
5158 #line 5159 "y.tab.c"
5159  break;
5160 
5161  case 226: /* enum_list: enum_list TK_COMMA error */
5162 #line 1922 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5163  {
5164  csplit_parser_error("in enum list");
5165  (yyval.string) = string_undefined;
5166  }
5167 #line 5168 "y.tab.c"
5168  break;
5169 
5170  case 227: /* enumerator: TK_IDENT */
5171 #line 1930 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5172  {
5173  pips_debug(5, "TK_IDENT->enumerator\n");
5174  pips_debug(9, "TK_IDENT=%s\n", (yyvsp[0].string));
5175  (yyval.string) = new_signature((yyvsp[0].string));
5176  }
5177 #line 5178 "y.tab.c"
5178  break;
5179 
5180  case 228: /* enumerator: TK_IDENT TK_EQ expression */
5181 #line 1936 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5182  {
5183  pips_debug(5, "TK_IDENT TK_EQ expression->enumerator\n");
5184  pips_debug(9, "TK_IDENT=%s\n", (yyvsp[-2].string));
5185  (yyval.string) = build_signature(new_signature((yyvsp[-2].string)), new_eq(), (yyvsp[0].string), NULL);
5186  }
5187 #line 5188 "y.tab.c"
5188  break;
5189 
5190  case 229: /* declarator: pointer_opt direct_decl attributes_with_asm */
5191 #line 1945 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5192  {
5193  pips_debug(5, "pointer_opt direct_decl attributes_with_asm -> declarator\n");
5194  pips_debug(5, "pointer_opt=\"%s\", direct_decl=\"%s\", attributes_with_asm=\"%s\"\n", (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string));
5195  /* Type and identifier information are mixed
5196  here. Instead of trying to retrieve the type
5197  only, it might be easier to postprocess the
5198  signature for Rule 2. */
5199  if(!string_undefined_p((yyvsp[0].string)) && strlen((yyvsp[0].string))>0) {
5200  pips_user_warning("attributes_with_asm=", (yyvsp[0].string));
5201  csplit_parser_warning("attributes_with_asm not supported\n");
5202  free_partial_signature((yyvsp[0].string));
5203  }
5204  if(true) /* Keep parameter names in signatures. */
5205  (yyval.string) = build_signature((yyvsp[-2].string), (yyvsp[-1].string), NULL);
5206  else {
5207  /* This does not work! Do not try it anymore... */
5208  free_partial_signature((yyvsp[-1].string));
5209  (yyval.string) = (yyvsp[-2].string);
5210  }
5211  }
5212 #line 5213 "y.tab.c"
5213  break;
5214 
5215  case 230: /* direct_decl: id_or_typename */
5216 #line 1971 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5217  {
5218  pips_debug(5, "id_or_typename -> direct_decl\n");
5219  pips_debug(5,"id_or_typename=\"%s\", csplit_is_typedef=%s\n", (yyvsp[0].string), bool_to_string(csplit_is_typedef));
5220  /* FI: I declare many too many types! I should look at Nga's grammar. */
5221  if (csplit_is_typedef) {
5222  /* Tell the lexer about the new type names : add to keyword_typedef_table */
5223  /*
5224  hash_put(keyword_typedef_table,new_signature($1),(void *) TK_NAMED_TYPE);
5225  */
5226  keep_track_of_typedef(new_signature((yyvsp[0].string)));
5227  /* Too early to reset: one typedef can be used
5228  to declare several named types... but I do
5229  not know how to use it. */
5230  //csplit_is_typedef = false;
5231  (yyval.string) = (yyvsp[0].string);
5232  }
5233  else if(true) { /* Keep identifiers in signatures */
5234  (yyval.string) = (yyvsp[0].string);
5235  }
5236  else { /* You are going to loose the function
5237  identifier. You may also loose enum
5238  member names... */
5239  (yyval.string) = new_empty();
5240  }
5241  }
5242 #line 5243 "y.tab.c"
5243  break;
5244 
5245  case 231: /* direct_decl: TK_LPAREN attributes declarator TK_RPAREN */
5246 #line 1997 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5247  {
5248  (yyval.string) = build_signature(new_lparen(), (yyvsp[-2].string), (yyvsp[-1].string), new_rparen(), NULL);
5249  }
5250 #line 5251 "y.tab.c"
5251  break;
5252 
5253  case 232: /* direct_decl: direct_decl TK_LBRACKET attributes comma_expression_opt TK_RBRACKET */
5254 #line 2001 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5255  {
5256  string s1 = (yyvsp[-4].string);
5257  string s3 = (yyvsp[-2].string);
5258  string s4 = (yyvsp[-1].string);
5259  /* FI: quick fix for
5260  summary_preconditions02.c which uses a
5261  function call to size an array... */
5262  if(string_undefined_p(s4))
5263  s4 = new_empty();
5264  (yyval.string) = build_signature(s1, new_lbracket(), s3, s4, new_rbracket(), NULL);
5265  }
5266 #line 5267 "y.tab.c"
5267  break;
5268 
5269  case 233: /* direct_decl: direct_decl TK_LBRACKET attributes error TK_RBRACKET */
5270 #line 2013 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5271  {
5272  (yyval.string) = build_signature((yyvsp[-4].string), new_lbracket(), (yyvsp[-2].string), new_rbracket(), NULL);
5273  }
5274 #line 5275 "y.tab.c"
5275  break;
5276 
5277  case 234: /* direct_decl: direct_decl parameter_list_startscope rest_par_list TK_RPAREN */
5278 #line 2017 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5279  {
5280  (yyval.string) = build_signature((yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), new_rparen(), NULL);
5281  }
5282 #line 5283 "y.tab.c"
5283  break;
5284 
5285  case 235: /* parameter_list_startscope: TK_LPAREN */
5286 #line 2023 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5287  { (yyval.string) = new_lparen();}
5288 #line 5289 "y.tab.c"
5289  break;
5290 
5291  case 236: /* rest_par_list: %empty */
5292 #line 2027 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5293  { (yyval.string) = new_empty();}
5294 #line 5295 "y.tab.c"
5295  break;
5296 
5297  case 237: /* rest_par_list: parameter_decl rest_par_list1 */
5298 #line 2029 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5299  {
5300  /* If such a test is really useful, it might be
5301  better located in another version of
5302  build_signature() which would check its
5303  arguments and decide to return
5304  string_undefined as soon as one of its
5305  arguments is undefined. */
5306  if(string_undefined_p((yyvsp[-1].string))) {
5307  free_partial_signature((yyvsp[0].string));
5308  (yyval.string) = string_undefined;
5309  }
5310  else
5311  (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL);
5312  }
5313 #line 5314 "y.tab.c"
5314  break;
5315 
5316  case 238: /* rest_par_list1: %empty */
5317 #line 2045 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5318  { (yyval.string) = new_empty(); }
5319 #line 5320 "y.tab.c"
5320  break;
5321 
5322  case 239: /* rest_par_list1: TK_COMMA TK_ELLIPSIS */
5323 #line 2047 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5324  {
5325  (yyval.string) = build_signature(new_comma(), new_ellipsis(), NULL);
5326  }
5327 #line 5328 "y.tab.c"
5328  break;
5329 
5330  case 240: /* rest_par_list1: TK_COMMA parameter_decl rest_par_list1 */
5331 #line 2051 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5332  {
5333  (yyval.string) = build_signature(new_comma(), (yyvsp[-1].string), (yyvsp[0].string), NULL);
5334  }
5335 #line 5336 "y.tab.c"
5336  break;
5337 
5338  case 241: /* parameter_decl: decl_spec_list declarator */
5339 #line 2058 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5340  {
5341  PopTypedef();
5342  (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL);
5343  }
5344 #line 5345 "y.tab.c"
5345  break;
5346 
5347  case 242: /* parameter_decl: decl_spec_list abstract_decl */
5348 #line 2063 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5349  {
5350  pips_debug(5, "decl_spec_list abstract_decl->parameter_decl\n");
5351  /*
5352  $$ = build_signature($1, $2, NULL);
5353  $$ = build_signature($1,
5354  $2,
5355  NULL);
5356  */
5357  /* pips_internal_error("FI: C syntax problem...\n"); */
5358  /* To avoid building to much useless stuff,
5359  although it foes not gain much because of
5360  parser structure: $2 is built before you
5361  realize it's useless because of $1. */
5362  if(string_undefined_p((yyvsp[-1].string))) {
5363  free_partial_signature((yyvsp[0].string));
5364  (yyval.string) = string_undefined;
5365  }
5366  else
5367  (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL);
5368  PopTypedef();
5369  }
5370 #line 5371 "y.tab.c"
5371  break;
5372 
5373  case 243: /* parameter_decl: decl_spec_list */
5374 #line 2085 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5375  {
5376  PopTypedef();
5377  (yyval.string) = (yyvsp[0].string);
5378  }
5379 #line 5380 "y.tab.c"
5380  break;
5381 
5382  case 244: /* parameter_decl: TK_LPAREN parameter_decl TK_RPAREN */
5383 #line 2090 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5384  {
5385  //PopTypedef();
5386  (yyval.string) = build_signature(new_lparen(), (yyvsp[-1].string), new_rparen(), NULL);
5387  }
5388 #line 5389 "y.tab.c"
5389  break;
5390 
5391  case 245: /* old_proto_decl: pointer_opt direct_old_proto_decl */
5392 #line 2099 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5393  {
5394  (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL);
5395  }
5396 #line 5397 "y.tab.c"
5397  break;
5398 
5399  case 246: /* direct_old_proto_decl: direct_decl TK_LPAREN old_parameter_list_ne TK_RPAREN old_pardef_list */
5400 #line 2105 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5401  {
5402  /* You do not need the formal parameter list */
5403  /*
5404  $$ = build_signature($1, new_lparen(), $3, new_rparen(),
5405  $5, NULL);
5406  */
5407  free_partial_signature((yyvsp[-2].string));
5408  free_partial_signature((yyvsp[0].string));
5409  /* $$ = build_signature($1, new_lparen(), new_rparen(), $5, NULL); */
5410  (yyval.string) = build_signature((yyvsp[-4].string), new_lparen(), new_rparen(), NULL);
5411  }
5412 #line 5413 "y.tab.c"
5413  break;
5414 
5415  case 247: /* direct_old_proto_decl: direct_decl TK_LPAREN TK_RPAREN */
5416 #line 2117 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5417  {
5418  (yyval.string) = build_signature((yyvsp[-2].string), new_lparen(), new_rparen(), NULL);
5419  }
5420 #line 5421 "y.tab.c"
5421  break;
5422 
5423  case 248: /* old_parameter_list_ne: TK_IDENT */
5424 #line 2124 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5425  {
5426  (yyval.string) = new_signature((yyvsp[0].string));
5427  }
5428 #line 5429 "y.tab.c"
5429  break;
5430 
5431  case 249: /* old_parameter_list_ne: TK_IDENT TK_COMMA old_parameter_list_ne */
5432 #line 2128 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5433  {
5434  (yyval.string) = build_signature((yyvsp[-2].string), new_comma(), (yyvsp[0].string), NULL);
5435  }
5436 #line 5437 "y.tab.c"
5437  break;
5438 
5439  case 250: /* old_pardef_list: %empty */
5440 #line 2134 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5441  { (yyval.string) = new_empty(); }
5442 #line 5443 "y.tab.c"
5443  break;
5444 
5445  case 251: /* old_pardef_list: decl_spec_list old_pardef TK_SEMICOLON TK_ELLIPSIS */
5446 #line 2136 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5447  {
5448  /* You want a comma-separated list of types, but... */
5449  /* bad news: "int * pj" is broken as "int" for
5450  decl_spec_list and "* pj" for old_pardef */
5451  (yyval.string) = build_signature((yyvsp[-3].string), (yyvsp[-2].string), new_semicolon(),
5452  new_ellipsis(), NULL);
5453  /*
5454  $$ = build_signature($1, $2, new_comma(),
5455  new_ellipsis(), NULL);
5456  */
5457  PopTypedef();
5458  }
5459 #line 5460 "y.tab.c"
5460  break;
5461 
5462  case 252: /* old_pardef_list: decl_spec_list old_pardef TK_SEMICOLON old_pardef_list */
5463 #line 2149 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5464  {
5465  (yyval.string) = build_signature((yyvsp[-3].string), (yyvsp[-2].string), new_semicolon(),
5466  (yyvsp[0].string), NULL);
5467  PopTypedef();
5468  }
5469 #line 5470 "y.tab.c"
5470  break;
5471 
5472  case 253: /* old_pardef: declarator */
5473 #line 2158 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5474  {
5475  (yyval.string) = (yyvsp[0].string);
5476  }
5477 #line 5478 "y.tab.c"
5478  break;
5479 
5480  case 254: /* old_pardef: declarator TK_COMMA old_pardef */
5481 #line 2162 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5482  {
5483  (yyval.string) = build_signature((yyvsp[-2].string), new_comma(), (yyvsp[0].string), NULL);
5484  }
5485 #line 5486 "y.tab.c"
5486  break;
5487 
5488  case 255: /* old_pardef: error */
5489 #line 2166 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5490  {
5491  csplit_parser_error("In old parameter definition\n");
5492  (yyval.string) = string_undefined;
5493  }
5494 #line 5495 "y.tab.c"
5495  break;
5496 
5497  case 256: /* pointer: TK_STAR attributes pointer_opt */
5498 #line 2174 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5499  {
5500  pips_debug(5, "TK_STAR attributes pointer_opt -> pointer\n");
5501  pips_debug(5, "attributes: \"%s\", pointer_opt: \"%s\"\n", (yyvsp[-1].string), (yyvsp[0].string));
5502  (yyval.string) = build_signature(new_star(), (yyvsp[-1].string), (yyvsp[0].string), NULL);
5503  }
5504 #line 5505 "y.tab.c"
5505  break;
5506 
5507  case 257: /* pointer_opt: %empty */
5508 #line 2182 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5509  { (yyval.string) = new_empty(); }
5510 #line 5511 "y.tab.c"
5511  break;
5512 
5513  case 258: /* pointer_opt: pointer */
5514 #line 2184 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5515  { (yyval.string) = (yyvsp[0].string); }
5516 #line 5517 "y.tab.c"
5517  break;
5518 
5519  case 259: /* type_name: decl_spec_list abstract_decl */
5520 #line 2189 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5521  {
5522  PopTypedef();
5523  (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL);
5524  }
5525 #line 5526 "y.tab.c"
5526  break;
5527 
5528  case 260: /* type_name: decl_spec_list */
5529 #line 2194 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5530  {
5531  PopTypedef();
5532  (yyval.string) = (yyvsp[0].string);
5533  }
5534 #line 5535 "y.tab.c"
5535  break;
5536 
5537  case 261: /* abstract_decl: pointer_opt abs_direct_decl attributes */
5538 #line 2202 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5539  {
5540  pips_debug(5, "pointer_opt abs_direct_decl attributes -> abstract_decl\n");
5541  (yyval.string) = build_signature((yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL);
5542  }
5543 #line 5544 "y.tab.c"
5544  break;
5545 
5546  case 262: /* abstract_decl: pointer */
5547 #line 2207 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5548  {
5549  pips_debug(5, "pointer -> abstract_decl\n");
5550  (yyval.string) = (yyvsp[0].string);
5551  }
5552 #line 5553 "y.tab.c"
5553  break;
5554 
5555  case 263: /* abs_direct_decl: TK_LPAREN attributes abstract_decl TK_RPAREN */
5556 #line 2217 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5557  {
5558  (yyval.string) = build_signature(new_lparen(), (yyvsp[-2].string), (yyvsp[-1].string), new_rparen(), NULL);
5559  }
5560 #line 5561 "y.tab.c"
5561  break;
5562 
5563  case 264: /* abs_direct_decl: TK_LPAREN error TK_RPAREN */
5564 #line 2221 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5565  {
5566  csplit_parser_error("Parse error: TK_LPAREN error TK_RPAREN\n");
5567  }
5568 #line 5569 "y.tab.c"
5569  break;
5570 
5571  case 265: /* abs_direct_decl: abs_direct_decl_opt TK_LBRACKET comma_expression_opt TK_RBRACKET */
5572 #line 2226 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5573  {
5574  (yyval.string) = build_signature((yyvsp[-3].string), new_lbracket(), new_signature("IDoNotWantcomma_expression_opt"), new_rbracket(), NULL);
5575  }
5576 #line 5577 "y.tab.c"
5577  break;
5578 
5579  case 266: /* abs_direct_decl: abs_direct_decl parameter_list_startscope rest_par_list TK_RPAREN */
5580 #line 2231 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5581  {
5582  (yyval.string) = build_signature((yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), new_rparen(), NULL);
5583  }
5584 #line 5585 "y.tab.c"
5585  break;
5586 
5587  case 267: /* abs_direct_decl_opt: abs_direct_decl */
5588 #line 2238 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5589  {
5590  (yyval.string) = (yyvsp[0].string);
5591  }
5592 #line 5593 "y.tab.c"
5593  break;
5594 
5595  case 268: /* abs_direct_decl_opt: %empty */
5596 #line 2241 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5597  { (yyval.string) = new_empty(); }
5598 #line 5599 "y.tab.c"
5599  break;
5600 
5601  case 269: /* function_def: function_def_start block */
5602 #line 2246 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5603  {
5604  }
5605 #line 5606 "y.tab.c"
5606  break;
5607 
5608  case 270: /* function_def_start: decl_spec_list declarator */
5609 #line 2251 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5610  {
5611  pips_debug(5, "decl_spec_list declarator->function_def_start\n");
5612  /* let's use a pretty limited stack... */
5617  }
5618 
5619  pips_assert("A temptative function name is available",
5621  pips_assert("No definite function name is available",
5625  pips_debug(5, "Rule 1: Function declaration is located between line %d and line %d\n", get_csplit_current_beginning(), csplit_line_number);
5626  csplit_is_function = 1; /* function's declaration */
5627 
5629  csplit_is_static_p = false;
5631  = simplify_signature(build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL));
5632  pips_debug(1, "Signature for function \"%s\": \"%s\"\n\n",
5635  PopTypedef();
5636  }
5637 #line 5638 "y.tab.c"
5638  break;
5639 
5640  case 271: /* function_def_start: decl_spec_list old_proto_decl */
5641 #line 2280 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5642  {
5643  /* The signature obtained here must be
5644  post-processed. The declaration list after
5645  the empty parameter list could be entirely
5646  dropped or converted into a type list. But
5647  beware of parameters declared together or
5648  declared in another order. Note that we could
5649  keep the parameter list between the
5650  parentheses and fetch the associated
5651  types. */
5652  pips_debug(5, "decl_spec_list old_proto_decl->function_def_start");
5655  pips_debug(5, "Rule 2: Function declaration is located between line %d and line %d\n", get_csplit_current_beginning(), csplit_line_number);
5656  csplit_is_function = 1; /* function's declaration */
5658  csplit_is_static_p = false;
5660  = simplify_signature(build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL));
5661  pips_debug(1, "Signature for function \"%s\": \"%s\"\n\n",
5664  PopTypedef();
5665  }
5666 #line 5667 "y.tab.c"
5667  break;
5668 
5669  case 272: /* function_def_start: TK_IDENT parameter_list_startscope rest_par_list TK_RPAREN */
5670 #line 2306 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5671  {
5672  pips_debug(5, "TK_IDENT parameter_list_startscope rest_par_list TK_RPAREN->function_def_start");
5673  /* Create the current function */
5674  pips_debug(5, "Rule 3: Function declaration of \"%s\" is located between line %d and line %d\n", (yyvsp[-3].string), get_csplit_current_beginning(), csplit_line_number);
5675  /* current_function_name = strdup($1); */
5676  csplit_definite_function_name = strdup((yyvsp[-3].string));
5677  csplit_is_function = 1; /* function's declaration */
5679  csplit_is_static_p = false;
5680 
5683  (build_signature((yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), new_rparen(), NULL));
5684  pips_debug(1, "Signature for function %s: %s\n\n",
5687  }
5688 #line 5689 "y.tab.c"
5689  break;
5690 
5691  case 273: /* function_def_start: TK_IDENT TK_LPAREN old_parameter_list_ne TK_RPAREN old_pardef_list */
5692 #line 2325 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5693  {
5694  pips_debug(5, "TK_IDENT TK_LPAREN old_parameter_list_ne TK_RPAREN old_pardef_list->function_def_start");
5695  pips_debug(5, "Rule 4: Function \"%s\" declaration is located between line %d and line %d\n",
5696  (yyvsp[-4].string),
5699  csplit_definite_function_name = strdup((yyvsp[-4].string));
5700  csplit_is_function = 1; /* function's declaration */
5702  csplit_is_static_p = false;
5703 
5704  free_partial_signature((yyvsp[-2].string));
5705  free_partial_signature((yyvsp[0].string));
5708  (build_signature((yyvsp[-4].string), new_lparen(), new_rparen(), NULL));
5709  pips_debug(1, "Signature for function %s: %s\n\n",
5712  }
5713 #line 5714 "y.tab.c"
5714  break;
5715 
5716  case 274: /* function_def_start: TK_IDENT TK_LPAREN TK_RPAREN */
5717 #line 2347 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5718  {
5719  pips_debug(5, "TK_IDENT TK_LPAREN TK_RPAREN->function_def_start");
5720  /* MakeCurrentFunction*/
5721  csplit_is_function = 5; /* function's declaration */
5722  pips_debug(5, "Rule 5: Function \"%s\" declaration is located between line %d and line %d\n",
5723  (yyvsp[-2].string),
5726  pips_internal_error("Not implemented yet");
5727  }
5728 #line 5729 "y.tab.c"
5729  break;
5730 
5731  case 275: /* attributes: %empty */
5732 #line 2362 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5733  { (yyval.string) = new_empty(); }
5734 #line 5735 "y.tab.c"
5735  break;
5736 
5737  case 276: /* attributes: attribute attributes */
5738 #line 2364 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5739  { (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL); }
5740 #line 5741 "y.tab.c"
5741  break;
5742 
5743  case 277: /* attributes_with_asm: %empty */
5744 #line 2371 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5745  { (yyval.string) = new_empty(); }
5746 #line 5747 "y.tab.c"
5747  break;
5748 
5749  case 278: /* attributes_with_asm: attribute attributes_with_asm */
5750 #line 2373 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5751  { (yyval.string) = build_signature((yyvsp[-1].string), (yyvsp[0].string), NULL); }
5752 #line 5753 "y.tab.c"
5753  break;
5754 
5755  case 279: /* attributes_with_asm: TK_ASM TK_LPAREN string_constant TK_RPAREN attributes */
5756 #line 2375 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5757  {
5758 /* skip the asm declaration ... this is relatively dangerous because it can change the symbol name. Yet it is ok to skip it at split level */
5759 #if 0
5760  free_partial_signature((yyvsp[0].string));
5761  csplit_parser_error("ASM extensions not implemented\n");
5762  (yyval.string) = string_undefined;
5763 #else
5764  { (yyval.string) = build_signature((yyvsp[0].string), NULL, NULL); }
5765 
5766 #endif
5767  }
5768 #line 5769 "y.tab.c"
5769  break;
5770 
5771  case 280: /* attribute: TK_ATTRIBUTE TK_LPAREN paren_attr_list_ne TK_RPAREN */
5772 #line 2390 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5773  {
5774  (yyval.string) = build_signature(new_signature("attribute"), new_lparen(), (yyvsp[-1].string),
5775  new_rparen(), NULL);
5776  }
5777 #line 5778 "y.tab.c"
5778  break;
5779 
5780  case 281: /* attribute: TK_DECLSPEC paren_attr_list_ne */
5781 #line 2395 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5782  {
5783  (yyval.string) = build_signature(new_signature("decl_spec"), (yyvsp[0].string), NULL);
5784  }
5785 #line 5786 "y.tab.c"
5786  break;
5787 
5788  case 282: /* attribute: TK_MSATTR */
5789 #line 2399 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5790  {
5791  (yyval.string) = new_signature("msattr");
5792  }
5793 #line 5794 "y.tab.c"
5794  break;
5795 
5796  case 283: /* attribute: TK_CONST */
5797 #line 2404 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5798  {
5799  (yyval.string) = new_signature("const");
5800  }
5801 #line 5802 "y.tab.c"
5802  break;
5803 
5804  case 284: /* attribute: TK_RESTRICT */
5805 #line 2408 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5806  {
5807  (yyval.string) = new_signature("restrict");
5808  }
5809 #line 5810 "y.tab.c"
5810  break;
5811 
5812  case 285: /* attribute: TK_VOLATILE */
5813 #line 2412 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5814  {
5815  (yyval.string) = new_signature("volatile");
5816  }
5817 #line 5818 "y.tab.c"
5818  break;
5819 
5820  case 286: /* attribute: TK_STATIC_DIMENSION */
5821 #line 2416 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5822  {
5823  (yyval.string) = new_signature("static");
5824  }
5825 #line 5826 "y.tab.c"
5826  break;
5827 
5828  case 288: /* attr: id_or_typename */
5829 #line 2426 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5830  { }
5831 #line 5832 "y.tab.c"
5832  break;
5833 
5834  case 289: /* attr: TK_IDENT TK_COLON TK_INTCON */
5835 #line 2428 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5836  { }
5837 #line 5838 "y.tab.c"
5838  break;
5839 
5840  case 290: /* attr: TK_DEFAULT TK_COLON TK_INTCON */
5841 #line 2430 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5842  { }
5843 #line 5844 "y.tab.c"
5844  break;
5845 
5846  case 291: /* attr: TK_IDENT TK_LPAREN TK_RPAREN */
5847 #line 2432 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5848  { }
5849 #line 5850 "y.tab.c"
5850  break;
5851 
5852  case 292: /* attr: TK_IDENT paren_attr_list_ne */
5853 #line 2434 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5854  { }
5855 #line 5856 "y.tab.c"
5856  break;
5857 
5858  case 293: /* attr: TK_INTCON */
5859 #line 2436 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5860  { }
5861 #line 5862 "y.tab.c"
5862  break;
5863 
5864  case 294: /* attr: string_constant */
5865 #line 2438 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5866  { }
5867 #line 5868 "y.tab.c"
5868  break;
5869 
5870  case 295: /* attr: TK_CONST */
5871 #line 2440 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5872  { }
5873 #line 5874 "y.tab.c"
5874  break;
5875 
5876  case 296: /* attr: TK_SIZEOF expression */
5877 #line 2442 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5878  {
5879  free_partial_signature((yyvsp[0].string));
5880  }
5881 #line 5882 "y.tab.c"
5882  break;
5883 
5884  case 297: /* attr: TK_SIZEOF TK_LPAREN type_name TK_RPAREN */
5885 #line 2446 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5886  { }
5887 #line 5888 "y.tab.c"
5888  break;
5889 
5890  case 298: /* attr: TK_ALIGNOF expression */
5891 #line 2449 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5892  {
5893  free_partial_signature((yyvsp[0].string));
5894  }
5895 #line 5896 "y.tab.c"
5896  break;
5897 
5898  case 299: /* attr: TK_ALIGNOF TK_LPAREN type_name TK_RPAREN */
5899 #line 2453 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5900  { }
5901 #line 5902 "y.tab.c"
5902  break;
5903 
5904  case 300: /* attr: TK_PLUS expression */
5905 #line 2455 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5906  {
5907  free_partial_signature((yyvsp[0].string));
5908  }
5909 #line 5910 "y.tab.c"
5910  break;
5911 
5912  case 301: /* attr: TK_MINUS expression */
5913 #line 2459 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5914  { free_partial_signature((yyvsp[0].string));}
5915 #line 5916 "y.tab.c"
5916  break;
5917 
5918  case 302: /* attr: TK_STAR expression */
5919 #line 2461 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5920  { free_partial_signature((yyvsp[0].string));}
5921 #line 5922 "y.tab.c"
5922  break;
5923 
5924  case 303: /* attr: TK_AND expression */
5925 #line 2464 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5926  { free_partial_signature((yyvsp[0].string));}
5927 #line 5928 "y.tab.c"
5928  break;
5929 
5930  case 304: /* attr: TK_EXCLAM expression */
5931 #line 2466 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5932  { free_partial_signature((yyvsp[0].string));}
5933 #line 5934 "y.tab.c"
5934  break;
5935 
5936  case 305: /* attr: TK_TILDE expression */
5937 #line 2468 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5938  { free_partial_signature((yyvsp[0].string));}
5939 #line 5940 "y.tab.c"
5940  break;
5941 
5942  case 306: /* attr: attr TK_PLUS attr */
5943 #line 2470 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5944  { }
5945 #line 5946 "y.tab.c"
5946  break;
5947 
5948  case 307: /* attr: attr TK_MINUS attr */
5949 #line 2472 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5950  { }
5951 #line 5952 "y.tab.c"
5952  break;
5953 
5954  case 308: /* attr: attr TK_STAR expression */
5955 #line 2474 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5956  { free_partial_signature((yyvsp[0].string));}
5957 #line 5958 "y.tab.c"
5958  break;
5959 
5960  case 309: /* attr: attr TK_SLASH attr */
5961 #line 2476 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5962  { }
5963 #line 5964 "y.tab.c"
5964  break;
5965 
5966  case 310: /* attr: attr TK_PERCENT attr */
5967 #line 2478 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5968  { }
5969 #line 5970 "y.tab.c"
5970  break;
5971 
5972  case 311: /* attr: attr TK_AND_AND attr */
5973 #line 2480 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5974  { }
5975 #line 5976 "y.tab.c"
5976  break;
5977 
5978  case 312: /* attr: attr TK_PIPE_PIPE attr */
5979 #line 2482 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5980  { }
5981 #line 5982 "y.tab.c"
5982  break;
5983 
5984  case 313: /* attr: attr TK_AND attr */
5985 #line 2484 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5986  {
5987  }
5988 #line 5989 "y.tab.c"
5989  break;
5990 
5991  case 314: /* attr: attr TK_PIPE attr */
5992 #line 2487 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5993  { }
5994 #line 5995 "y.tab.c"
5995  break;
5996 
5997  case 315: /* attr: attr TK_CIRC attr */
5998 #line 2489 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
5999  { }
6000 #line 6001 "y.tab.c"
6001  break;
6002 
6003  case 316: /* attr: attr TK_EQ_EQ attr */
6004 #line 2491 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6005  { }
6006 #line 6007 "y.tab.c"
6007  break;
6008 
6009  case 317: /* attr: attr TK_EXCLAM_EQ attr */
6010 #line 2493 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6011  { }
6012 #line 6013 "y.tab.c"
6013  break;
6014 
6015  case 318: /* attr: attr TK_INF attr */
6016 #line 2495 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6017  { }
6018 #line 6019 "y.tab.c"
6019  break;
6020 
6021  case 319: /* attr: attr TK_SUP attr */
6022 #line 2497 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6023  { }
6024 #line 6025 "y.tab.c"
6025  break;
6026 
6027  case 320: /* attr: attr TK_INF_EQ attr */
6028 #line 2499 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6029  { }
6030 #line 6031 "y.tab.c"
6031  break;
6032 
6033  case 321: /* attr: attr TK_SUP_EQ attr */
6034 #line 2501 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6035  { }
6036 #line 6037 "y.tab.c"
6037  break;
6038 
6039  case 322: /* attr: attr TK_INF_INF attr */
6040 #line 2503 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6041  { }
6042 #line 6043 "y.tab.c"
6043  break;
6044 
6045  case 323: /* attr: attr TK_SUP_SUP attr */
6046 #line 2505 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6047  { }
6048 #line 6049 "y.tab.c"
6049  break;
6050 
6051  case 324: /* attr: attr TK_ARROW id_or_typename */
6052 #line 2507 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6053  { }
6054 #line 6055 "y.tab.c"
6055  break;
6056 
6057  case 325: /* attr: attr TK_DOT id_or_typename */
6058 #line 2509 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6059  { }
6060 #line 6061 "y.tab.c"
6061  break;
6062 
6063  case 326: /* attr: TK_LPAREN attr TK_RPAREN */
6064 #line 2511 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6065  { }
6066 #line 6067 "y.tab.c"
6067  break;
6068 
6069  case 328: /* attr_list_ne: attr */
6070 #line 2516 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6071  { }
6072 #line 6073 "y.tab.c"
6073  break;
6074 
6075  case 329: /* attr_list_ne: attr TK_COMMA attr_list_ne */
6076 #line 2518 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6077  { }
6078 #line 6079 "y.tab.c"
6079  break;
6080 
6081  case 330: /* attr_list_ne: error TK_COMMA attr_list_ne */
6082 #line 2520 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6083  { }
6084 #line 6085 "y.tab.c"
6085  break;
6086 
6087  case 331: /* paren_attr_list_ne: TK_LPAREN attr_list_ne TK_RPAREN */
6088 #line 2524 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6089  {
6090  csplit_parser_error("Attribute lists are not supported yet.\n");
6091  (yyval.string) = build_signature(new_lparen(), new_signature("IDoNotWantAttrListne"), new_rparen(), NULL);
6092  }
6093 #line 6094 "y.tab.c"
6094  break;
6095 
6096  case 332: /* paren_attr_list_ne: TK_LPAREN error TK_RPAREN */
6097 #line 2529 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6098  {
6099  csplit_parser_error("Near attribute list ne");
6100  (yyval.string) = string_undefined;
6101  }
6102 #line 6103 "y.tab.c"
6103  break;
6104 
6105  case 333: /* asmattr: %empty */
6106 #line 2537 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6107  { }
6108 #line 6109 "y.tab.c"
6109  break;
6110 
6111  case 334: /* asmattr: TK_VOLATILE asmattr */
6112 #line 2539 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6113  { }
6114 #line 6115 "y.tab.c"
6115  break;
6116 
6117  case 335: /* asmattr: TK_CONST asmattr */
6118 #line 2541 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6119  { }
6120 #line 6121 "y.tab.c"
6121  break;
6122 
6123  case 336: /* asmtemplate: one_string_constant */
6124 #line 2545 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6125  { }
6126 #line 6127 "y.tab.c"
6127  break;
6128 
6129  case 337: /* asmtemplate: one_string_constant asmtemplate */
6130 #line 2547 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6131  { }
6132 #line 6133 "y.tab.c"
6133  break;
6134 
6135  case 338: /* asmoutputs: %empty */
6136 #line 2551 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6137  { }
6138 #line 6139 "y.tab.c"
6139  break;
6140 
6141  case 339: /* asmoutputs: TK_COLON asmoperands asminputs */
6142 #line 2553 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6143  { }
6144 #line 6145 "y.tab.c"
6145  break;
6146 
6147  case 340: /* asmoperands: %empty */
6148 #line 2557 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6149  { }
6150 #line 6151 "y.tab.c"
6151  break;
6152 
6153  case 341: /* asmoperands: asmoperandsne */
6154 #line 2559 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6155  { }
6156 #line 6157 "y.tab.c"
6157  break;
6158 
6159  case 342: /* asmoperandsne: asmoperand */
6160 #line 2563 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6161  { }
6162 #line 6163 "y.tab.c"
6163  break;
6164 
6165  case 343: /* asmoperandsne: asmoperandsne TK_COMMA asmoperand */
6166 #line 2565 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6167  { }
6168 #line 6169 "y.tab.c"
6169  break;
6170 
6171  case 344: /* asmoperand: string_constant TK_LPAREN expression TK_RPAREN */
6172 #line 2569 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6173  { free_partial_signature((yyvsp[-1].string));}
6174 #line 6175 "y.tab.c"
6175  break;
6176 
6177  case 345: /* asmoperand: string_constant TK_LPAREN error TK_RPAREN */
6178 #line 2571 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6179  { }
6180 #line 6181 "y.tab.c"
6181  break;
6182 
6183  case 346: /* asminputs: %empty */
6184 #line 2575 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6185  { }
6186 #line 6187 "y.tab.c"
6187  break;
6188 
6189  case 347: /* asminputs: TK_COLON asmoperands asmclobber */
6190 #line 2577 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6191  { }
6192 #line 6193 "y.tab.c"
6193  break;
6194 
6195  case 348: /* asmclobber: %empty */
6196 #line 2581 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6197  { }
6198 #line 6199 "y.tab.c"
6199  break;
6200 
6201  case 349: /* asmclobber: TK_COLON asmcloberlst_ne */
6202 #line 2583 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6203  { }
6204 #line 6205 "y.tab.c"
6205  break;
6206 
6207  case 350: /* asmcloberlst_ne: one_string_constant */
6208 #line 2587 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6209  { }
6210 #line 6211 "y.tab.c"
6211  break;
6212 
6213  case 351: /* asmcloberlst_ne: one_string_constant TK_COMMA asmcloberlst_ne */
6214 #line 2589 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6215  { }
6216 #line 6217 "y.tab.c"
6217  break;
6218 
6219 
6220 #line 6221 "y.tab.c"
6221 
6222  default: break;
6223  }
6224  /* User semantic actions sometimes alter yychar, and that requires
6225  that yytoken be updated with the new translation. We take the
6226  approach of translating immediately before every use of yytoken.
6227  One alternative is translating here after every semantic action,
6228  but that translation would be missed if the semantic action invokes
6229  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6230  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6231  incorrect destructor might then be invoked immediately. In the
6232  case of YYERROR or YYBACKUP, subsequent parser actions might lead
6233  to an incorrect destructor call or verbose syntax error message
6234  before the lookahead is translated. */
6235  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
6236 
6237  YYPOPSTACK (yylen);
6238  yylen = 0;
6239 
6240  *++yyvsp = yyval;
6241 
6242  /* Now 'shift' the result of the reduction. Determine what state
6243  that goes to, based on the state we popped back to and the rule
6244  number reduced by. */
6245  {
6246  const int yylhs = yyr1[yyn] - YYNTOKENS;
6247  const int yyi = yypgoto[yylhs] + *yyssp;
6248  yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
6249  ? yytable[yyi]
6250  : yydefgoto[yylhs]);
6251  }
6252 
6253  goto yynewstate;
6254 
6255 
6256 /*--------------------------------------.
6257 | yyerrlab -- here on detecting error. |
6258 `--------------------------------------*/
6259 yyerrlab:
6260  /* Make sure we have latest lookahead translation. See comments at
6261  user semantic actions for why this is necessary. */
6262  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
6263  /* If not already recovering from an error, report this error. */
6264  if (!yyerrstatus)
6265  {
6266  ++yynerrs;
6267  yyerror (YY_("syntax error"));
6268  }
6269 
6270  if (yyerrstatus == 3)
6271  {
6272  /* If just tried and failed to reuse lookahead token after an
6273  error, discard it. */
6274 
6275  if (yychar <= YYEOF)
6276  {
6277  /* Return failure if at end of input. */
6278  if (yychar == YYEOF)
6279  YYABORT;
6280  }
6281  else
6282  {
6283  yydestruct ("Error: discarding",
6284  yytoken, &yylval);
6285  yychar = YYEMPTY;
6286  }
6287  }
6288 
6289  /* Else will try to reuse lookahead token after shifting the error
6290  token. */
6291  goto yyerrlab1;
6292 
6293 
6294 /*---------------------------------------------------.
6295 | yyerrorlab -- error raised explicitly by YYERROR. |
6296 `---------------------------------------------------*/
6297 yyerrorlab:
6298  /* Pacify compilers when the user code never invokes YYERROR and the
6299  label yyerrorlab therefore never appears in user code. */
6300  if (0)
6301  YYERROR;
6302  ++yynerrs;
6303 
6304  /* Do not reclaim the symbols of the rule whose action triggered
6305  this YYERROR. */
6306  YYPOPSTACK (yylen);
6307  yylen = 0;
6308  YY_STACK_PRINT (yyss, yyssp);
6309  yystate = *yyssp;
6310  goto yyerrlab1;
6311 
6312 
6313 /*-------------------------------------------------------------.
6314 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6315 `-------------------------------------------------------------*/
6316 yyerrlab1:
6317  yyerrstatus = 3; /* Each real token shifted decrements this. */
6318 
6319  /* Pop stack until we find a state that shifts the error token. */
6320  for (;;)
6321  {
6322  yyn = yypact[yystate];
6323  if (!yypact_value_is_default (yyn))
6324  {
6325  yyn += YYSYMBOL_YYerror;
6326  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
6327  {
6328  yyn = yytable[yyn];
6329  if (0 < yyn)
6330  break;
6331  }
6332  }
6333 
6334  /* Pop the current state because it cannot handle the error token. */
6335  if (yyssp == yyss)
6336  YYABORT;
6337 
6338 
6339  yydestruct ("Error: popping",
6340  YY_ACCESSING_SYMBOL (yystate), yyvsp);
6341  YYPOPSTACK (1);
6342  yystate = *yyssp;
6343  YY_STACK_PRINT (yyss, yyssp);
6344  }
6345 
6347  *++yyvsp = yylval;
6349 
6350 
6351  /* Shift the error token. */
6352  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
6353 
6354  yystate = yyn;
6355  goto yynewstate;
6356 
6357 
6358 /*-------------------------------------.
6359 | yyacceptlab -- YYACCEPT comes here. |
6360 `-------------------------------------*/
6361 yyacceptlab:
6362  yyresult = 0;
6363  goto yyreturnlab;
6364 
6365 
6366 /*-----------------------------------.
6367 | yyabortlab -- YYABORT comes here. |
6368 `-----------------------------------*/
6369 yyabortlab:
6370  yyresult = 1;
6371  goto yyreturnlab;
6372 
6373 
6374 /*-----------------------------------------------------------.
6375 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
6376 `-----------------------------------------------------------*/
6377 yyexhaustedlab:
6378  yyerror (YY_("memory exhausted"));
6379  yyresult = 2;
6380  goto yyreturnlab;
6381 
6382 
6383 /*----------------------------------------------------------.
6384 | yyreturnlab -- parsing is finished, clean up and return. |
6385 `----------------------------------------------------------*/
6386 yyreturnlab:
6387  if (yychar != YYEMPTY)
6388  {
6389  /* Make sure we have latest lookahead translation. See comments at
6390  user semantic actions for why this is necessary. */
6391  yytoken = YYTRANSLATE (yychar);
6392  yydestruct ("Cleanup: discarding lookahead",
6393  yytoken, &yylval);
6394  }
6395  /* Do not reclaim the symbols of the rule whose action triggered
6396  this YYABORT or YYACCEPT. */
6397  YYPOPSTACK (yylen);
6398  YY_STACK_PRINT (yyss, yyssp);
6399  while (yyssp != yyss)
6400  {
6401  yydestruct ("Cleanup: popping",
6402  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
6403  YYPOPSTACK (1);
6404  }
6405 #ifndef yyoverflow
6406  if (yyss != yyssa)
6407  YYSTACK_FREE (yyss);
6408 #endif
6409 
6410  return yyresult;
6411 }
6412 
6413 #line 2592 "/home/fabien/NIGHT/prod/pips/src/Libs/preprocessor/splitc.y"
6414 
void pips_log_alist(const pips_log_t tag, const string pips_pass, const string pips_owner, const string pips_func, const string pips_file, const int pips_line, const string user_func, const string user_file, const int user_line, const int user_line2, const string stmt, const string suggestion, const string format, va_list *args)
log entry with unprocessed format/alist arguments
Definition: message.c:1200
string get_pips_current_pass_name(void)
Export this piece of information to customize warning functions in passes.
Definition: message.c:77
string get_pips_current_module(void)
Definition: message.c:82
static int count
Definition: SDG.c:519
void csplit_error_handler()
Close open files and reset variables.
Definition: csplit_file.c:531
void csplit_copy(const char *module_name, string signature, int first_line, int last_line, size_t first_offset, size_t last_offset, int user_first_line, bool is_static_p)
Create the module directory and file, copy the definition of the module and add the module name to th...
Definition: csplit_file.c:334
string current_file_name
Split a C file into one file per module (function or procedure) plus.
Definition: csplit_file.c:640
void csplit_close_files(string file_name)
Definition: csplit_file.c:547
void keep_track_of_typedef(string type_name)
Definition: csplit_file.c:517
static const char * yysymbol_name(yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
Definition: cyacc.tab.c:1383
static void yy_symbol_print(FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const *const yyvaluep)
-----------------------—.
Definition: cyacc.tab.c:2447
static const yytype_int16 yyrline[]
YYRLINE[YYN] – Source line where rule number YYN was defined.
Definition: cyacc.tab.c:1279
static void yy_symbol_value_print(FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const *const yyvaluep)
-------------------------------—.
Definition: cyacc.tab.c:2429
static void yy_reduce_print(yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
--------------------------------------------—.
Definition: cyacc.tab.c:2486
static const char *const yytname[]
YYTNAME[SYMBOL-NUM] – String name of the symbol SYMBOL-NUM.
Definition: cyacc.tab.c:1327
static void yy_stack_print(yy_state_t *yybottom, yy_state_t *yytop)
--------------------------------------------------------------—.
Definition: cyacc.tab.c:2463
#define YYFPRINTF
Enable debugging if requested.
Definition: cyacc.tab.c:2400
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
string safe_read_nth_line(string fn, int n)
Assumes "fn" is the name of a text file, opens it, and returns its nth line (starting with 1) in a ne...
Definition: file.c:523
@ int_domain
Definition: genC.h:166
@ string_domain
Definition: genC.h:170
yytokentype
Definition: genread.h:52
yysymbol_kind_t
!YY_GENREAD_Y_TAB_H_INCLUDED
Definition: genread_yacc.c:294
short yytype_int16
Definition: genread_yacc.c:378
unsigned char yytype_uint8
Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants.
Definition: genread_yacc.c:399
int yy_state_fast_t
State numbers in computations.
Definition: genread_yacc.c:457
signed char yytype_int8
On compilers that do not define PTRDIFF_MAX etc., make sure <limits.h> and (if available) <stdint....
Definition: genread_yacc.c:370
yytype_int8 yy_state_t
Stored state numbers (used for stacks).
Definition: genread_yacc.c:454
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
Definition: misc-local.h:145
#define pips_user_warning
Definition: misc-local.h:146
#define asprintf
Definition: misc-local.h:225
@ warning_log
Definition: misc-local.h:34
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
Definition: misc-local.h:172
#define pips_internal_error
Definition: misc-local.h:149
#define pips_user_error
Definition: misc-local.h:147
string bool_to_string(bool)
Definition: string.c:243
string concatenate(const char *,...)
Return the concatenation of the given strings.
Definition: string.c:183
#define stack_undefined
Definition: newgen_stack.h:55
void * stack_nth(const stack, int)
returns the nth item starting from the head and counting from 1, when possible, or NULL,...
Definition: stack.c:436
bool stack_empty_p(const stack)
void * stack_head(const stack)
returns the item on top of stack s
Definition: stack.c:420
int stack_size(const stack)
observers
void stack_push(void *, stack)
stack use
Definition: stack.c:373
void stack_free(stack *)
type, bucket_size, policy
Definition: stack.c:292
stack stack_make(int, int, int)
allocation
Definition: stack.c:246
void * stack_pop(stack)
POPs one item from stack s.
Definition: stack.c:399
#define stack_undefined_p(s)
Definition: newgen_stack.h:56
int tag
TAG.
Definition: newgen_types.h:92
#define string_undefined
Definition: newgen_types.h:40
char * string
STRING.
Definition: newgen_types.h:39
#define string_undefined_p(s)
Definition: newgen_types.h:41
intptr_t _int
_INT
Definition: newgen_types.h:53
int splitc_lex_destroy()
char * splitc_text
Definition: preprocessor.h:178
#define csplit_parser_warning(...)
size_t get_csplit_file_offset_beginning()
Get the file position in the file to split where the current function begins:
Definition: lexer.c:1205
int get_user_current_beginning()
Get the current line number in the file to split from the user point of view (before preprocessor exp...
Definition: lexer.c:1198
int get_csplit_current_beginning()
Definition: lexer.c:1190
int csplit_line_number
To be exported to the parser for splitting the preprocessed file.
Definition: lexer.c:1085
void reset_csplit_current_beginning()
This function is called at the end of any top-level C construct:
Definition: lexer.c:1152
size_t get_current_csplit_file_offset()
Get the current file position in the file to split:
Definition: lexer.c:1211
string preprocessor_current_split_file_name
Split a C or Fortran file into as many files as modules.
Definition: source_file.c:584
string preprocessor_current_initial_file_name
The digestion of a user file by PIPS begins here.
Definition: source_file.c:1088
char * strdup()
s1
Definition: set.c:247
#define TK_BUILTIN_VA_LIST
Definition: splitc.c:857
static int c_preprocessor_scope_number
Definition: splitc.c:271
#define TK_DECLSPEC
Definition: splitc.c:859
static string new_semicolon()
Definition: splitc.c:551
#define TK_STATIC
Definition: splitc.c:782
#define TK_AT_TRANSFORM
Definition: splitc.c:863
static string new_ellipsis()
Definition: splitc.c:584
#define TK_BREAK
Definition: splitc.c:837
static string new_lparen()
Definition: splitc.c:568
int preprocessor_scope_number()
Definition: splitc.c:345
static int number_of_signatures_freed
Definition: splitc.c:356
#define yyparse
------—.
Definition: splitc.c:68
void ForceResetTypedefStack()
Definition: splitc.c:259
static const yytype_uint8 yyr1[]
YYR1[RULE-NUM] – Symbol kind of the left-hand side of rule RULE-NUM.
Definition: splitc.c:2687
#define TK_MINUS_EQ
Definition: splitc.c:793
string csplit_current_function_name
to know if this is the declaration of a function or not, to distinguish between a static variable and...
Definition: splitc.c:123
#define TK_SHORT
Definition: splitc.c:779
#define TK_SUP_EQ
Definition: splitc.c:809
#define TK_WHILE
Definition: splitc.c:844
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Definition: splitc.c:1297
#define YYMAXDEPTH
Increase the parser stack to have SPEC2006/445.gobmk/owl_defendpat.c going through without a:
Definition: splitc.c:102
#define TK_EQ_EQ
Definition: splitc.c:804
#define TK_IDENT
Definition: splitc.c:756
#define TK_RESTRICT
Definition: splitc.c:784
#define YYSTACK_FREE
Definition: splitc.c:1359
static string simplify_signature(string s)
Get rid of useless spaces: multiple contiguous spaces, spaces next to a separator,...
Definition: splitc.c:469
#define TK_SEMICOLON
Definition: splitc.c:833
static const yytype_int8 yytranslate[]
YYTRANSLATE[TOKEN-NUM] – Symbol number corresponding to TOKEN-NUM as returned by yylex.
Definition: splitc.c:1473
#define TK_PIPE_EQ
Definition: splitc.c:798
static string new_empty()
Beware of the free: no constant strings in signature!
Definition: splitc.c:535
static stack c_preprocessor_scope_stack
Definition: splitc.c:272
yysymbol_kind_t
!YY_SPLITC_Y_TAB_H_INCLUDED
Definition: splitc.c:911
@ YYSYMBOL_statement_list
declaration_list
Definition: splitc.c:1065
@ YYSYMBOL_TK_ALIGNOF
TK_SIZEOF
Definition: splitc.c:950
@ YYSYMBOL_wstring_list
string_list
Definition: splitc.c:1044
@ YYSYMBOL_TK_TYPEOF
TK_ASM
Definition: splitc.c:1012
@ YYSYMBOL_decl_spec_list
init_declarator
Definition: splitc.c:1078
@ YYSYMBOL_TK_SHORT
TK_LONG
Definition: splitc.c:939
@ YYSYMBOL_TK_LBRACKET
TK_LBRACE
Definition: splitc.c:990
@ YYSYMBOL_asmattr
paren_attr_list_ne
Definition: splitc.c:1113
@ YYSYMBOL_TK_MINUS_EQ
TK_PLUS_EQ
Definition: splitc.c:953
@ YYSYMBOL_local_label_names
local_labels
Definition: splitc.c:1067
@ YYSYMBOL_for_clause
$@7
Definition: splitc.c:1074
@ YYSYMBOL_attribute
attributes_with_asm
Definition: splitc.c:1109
@ YYSYMBOL_YYUNDEF
error
Definition: splitc.c:915
@ YYSYMBOL_maybecomma
id_or_typename
Definition: splitc.c:1038
@ YYSYMBOL_158_5
$@4
Definition: splitc.c:1071
@ YYSYMBOL_TK_UNION
TK_TYPEDEF
Definition: splitc.c:935
@ YYSYMBOL_block_attrs
$@2
Definition: splitc.c:1063
@ YYSYMBOL_TK_ASM
TK_INLINE
Definition: splitc.c:1011
@ YYSYMBOL_TK_RBRACKET
TK_LBRACKET
Definition: splitc.c:991
@ YYSYMBOL_TK_MSATTR
TK_MSASM
Definition: splitc.c:1021
@ YYSYMBOL_comma_expression_opt
comma_expression
Definition: splitc.c:1057
@ YYSYMBOL_TK_MINUS
TK_PLUS
Definition: splitc.c:971
@ YYSYMBOL_asmclobber
asminputs
Definition: splitc.c:1120
@ YYSYMBOL_rest_par_list1
rest_par_list
Definition: splitc.c:1092
@ YYSYMBOL_TK_CASE
TK_SWITCH
Definition: splitc.c:1002
@ YYSYMBOL_TK_NAMED_TYPE
TK_FLOATCON
Definition: splitc.c:920
@ YYSYMBOL_TK_SLASH_EQ
TK_STAR_EQ
Definition: splitc.c:955
@ YYSYMBOL_pointer_opt
pointer
Definition: splitc.c:1100
@ YYSYMBOL_TK_BUILTIN_VA_ARG
TK_LABEL__
Definition: splitc.c:1016
@ YYSYMBOL_TK_TYPEDEF
TK_STRUCT
Definition: splitc.c:934
@ YYSYMBOL_TK_GOTO
TK_CONTINUE
Definition: splitc.c:999
@ YYSYMBOL_TK_CONTINUE
TK_BREAK
Definition: splitc.c:998
@ YYSYMBOL_157_4
$@3
Definition: splitc.c:1070
@ YYSYMBOL_TK_BREAK
TK_QUEST
Definition: splitc.c:997
@ YYSYMBOL_TK_ARROW
TK_SUP_SUP_EQ
Definition: splitc.c:962
@ YYSYMBOL_enumerator
enum_list
Definition: splitc.c:1087
@ YYSYMBOL_TK_BUILTIN_VA_LIST
TK_BUILTIN_VA_ARG
Definition: splitc.c:1017
@ YYSYMBOL_id_or_typename
global
Definition: splitc.c:1037
@ YYSYMBOL_TK_PERCENT
TK_SLASH
Definition: splitc.c:974
@ YYSYMBOL_initializer
initializer_list_opt
Definition: splitc.c:1049
@ YYSYMBOL_TK_AUTO
TK_RESTRICT
Definition: splitc.c:945
@ YYSYMBOL_TK_INT
TK_CHAR
Definition: splitc.c:925
@ YYSYMBOL_asmoperand
asmoperandsne
Definition: splitc.c:1118
@ YYSYMBOL_TK_COLON
TK_RBRACKET
Definition: splitc.c:992
@ YYSYMBOL_TK_SUP_EQ
TK_INF_EQ
Definition: splitc.c:969
@ YYSYMBOL_init_expression
one_string
Definition: splitc.c:1046
@ YYSYMBOL_file
interpret
Definition: splitc.c:1033
@ YYSYMBOL_TK_EXCLAM
TK_CIRC
Definition: splitc.c:979
@ YYSYMBOL_TK_SIZEOF
TK_STATIC_DIMENSION
Definition: splitc.c:949
@ YYSYMBOL_YYerror
"end of file"
Definition: splitc.c:914
@ YYSYMBOL_148_1
block
Definition: splitc.c:1061
@ YYSYMBOL_TK_SUP_SUP
TK_INF_INF
Definition: splitc.c:983
@ YYSYMBOL_TK_CONST
TK_STATIC
Definition: splitc.c:943
@ YYSYMBOL_constant
expression
Definition: splitc.c:1040
@ YYSYMBOL_TK_AT_NAME
TK_AT_EXPR
Definition: splitc.c:1027
@ YYSYMBOL_TK_RPAREN
TK_MINUS_MINUS
Definition: splitc.c:986
@ YYSYMBOL_TK_UINT128
TK_INT128
Definition: splitc.c:927
@ YYSYMBOL_type_spec
@8
Definition: splitc.c:1082
@ YYSYMBOL_TK_EOF
TK_WSTRINGCON
Definition: splitc.c:923
@ YYSYMBOL_TK_SUP_SUP_EQ
TK_INF_INF_EQ
Definition: splitc.c:961
@ YYSYMBOL_old_pardef_list
old_parameter_list_ne
Definition: splitc.c:1097
@ YYSYMBOL_TK_VOLATILE
TK_SHORT
Definition: splitc.c:940
@ YYSYMBOL_local_labels
statement_list
Definition: splitc.c:1066
@ YYSYMBOL_string_list
one_string_constant
Definition: splitc.c:1043
@ YYSYMBOL_abs_direct_decl_opt
abs_direct_decl
Definition: splitc.c:1104
@ YYSYMBOL_TK_INF
TK_EXCLAM_EQ
Definition: splitc.c:966
@ YYSYMBOL_TK_INLINE
TK_ATTRIBUTE
Definition: splitc.c:1010
@ YYSYMBOL_struct_decl_list
type_spec
Definition: splitc.c:1083
@ YYSYMBOL_TK_EQ_EQ
TK_DOT
Definition: splitc.c:964
@ YYSYMBOL_abs_direct_decl
abstract_decl
Definition: splitc.c:1103
@ YYSYMBOL_TK_PRAGMA
TK_MSATTR
Definition: splitc.c:1022
@ YYSYMBOL_enum_list
field_decl
Definition: splitc.c:1086
@ YYSYMBOL_paren_attr_list_ne
attr_list_ne
Definition: splitc.c:1112
@ YYSYMBOL_TK_INT128
TK_INT
Definition: splitc.c:926
@ YYSYMBOL_TK_AT_EXPR
TK_AT_SPECIFIER
Definition: splitc.c:1026
@ YYSYMBOL_field_decl_list
struct_decl_list
Definition: splitc.c:1084
@ YYSYMBOL_parameter_list_startscope
direct_decl
Definition: splitc.c:1090
@ YYSYMBOL_declarator
enumerator
Definition: splitc.c:1088
@ YYSYMBOL_TK_PIPE_PIPE
TK_AND_AND
Definition: splitc.c:981
@ YYSYMBOL_init_declarator
init_declarator_list
Definition: splitc.c:1077
@ YYSYMBOL_expression
maybecomma
Definition: splitc.c:1039
@ YYSYMBOL_location
globals
Definition: splitc.c:1035
@ YYSYMBOL_TK_IF
TK_FOR
Definition: splitc.c:1007
@ YYSYMBOL_159_6
$@5
Definition: splitc.c:1072
@ YYSYMBOL_TK_PIPE
TK_AND
Definition: splitc.c:977
@ YYSYMBOL_asminputs
asmoperand
Definition: splitc.c:1119
@ YYSYMBOL_TK_AT_SPECIFIER
TK_AT_TRANSFORMEXPR
Definition: splitc.c:1025
@ YYSYMBOL_TK_AND
TK_TILDE
Definition: splitc.c:976
@ YYSYMBOL_TK_LBRACE
TK_RBRACE
Definition: splitc.c:989
@ YYSYMBOL_TK_PERCENT_EQ
TK_SLASH_EQ
Definition: splitc.c:956
@ YYSYMBOL_TK_MINUS_MINUS
TK_PLUS_PLUS
Definition: splitc.c:985
@ YYSYMBOL_comma_expression
opt_expression
Definition: splitc.c:1056
@ YYSYMBOL_TK_FLOATCON
TK_INTCON
Definition: splitc.c:919
@ YYSYMBOL_TK_DOT
TK_ARROW
Definition: splitc.c:963
@ YYSYMBOL_TK_INF_EQ
TK_SUP
Definition: splitc.c:968
@ YYSYMBOL_old_proto_decl
parameter_decl
Definition: splitc.c:1094
@ YYSYMBOL_TK_CIRC_EQ
TK_PIPE_EQ
Definition: splitc.c:959
@ YYSYMBOL_TK_QUEST
TK_ELLIPSIS
Definition: splitc.c:996
@ YYSYMBOL_arguments
gcc_init_designators
Definition: splitc.c:1054
@ YYSYMBOL_old_parameter_list_ne
direct_old_proto_decl
Definition: splitc.c:1096
@ YYSYMBOL_opt_expression
arguments
Definition: splitc.c:1055
@ YYSYMBOL_old_pardef
old_pardef_list
Definition: splitc.c:1098
@ YYSYMBOL_bracket_comma_expression
paren_comma_expression
Definition: splitc.c:1059
@ YYSYMBOL_TK_STATIC
TK_EXTERN
Definition: splitc.c:942
@ YYSYMBOL_156_3
statement
Definition: splitc.c:1069
@ YYSYMBOL_TK_DECLSPEC
TK_BLOCKATTRIBUTE
Definition: splitc.c:1019
@ YYSYMBOL_TK_SWITCH
TK_RETURN
Definition: splitc.c:1001
@ YYSYMBOL_init_declarator_list
declaration
Definition: splitc.c:1076
@ YYSYMBOL_149_2
$@1
Definition: splitc.c:1062
@ YYSYMBOL_TK_AND_EQ
TK_PERCENT_EQ
Definition: splitc.c:957
@ YYSYMBOL_TK_INF_INF
TK_PIPE_PIPE
Definition: splitc.c:982
@ YYSYMBOL_init_designators
eq_opt
Definition: splitc.c:1051
@ YYSYMBOL_TK_STRUCT
TK_ENUM
Definition: splitc.c:933
@ YYSYMBOL_TK_PLUS_EQ
TK_EQ
Definition: splitc.c:952
@ YYSYMBOL_asmoutputs
asmtemplate
Definition: splitc.c:1115
@ YYSYMBOL_attr
attribute
Definition: splitc.c:1110
@ YYSYMBOL_TK_LONG
TK_UNSIGNED
Definition: splitc.c:938
@ YYSYMBOL_TK_AND_AND
TK_EXCLAM
Definition: splitc.c:980
@ YYSYMBOL_TK_DO
TK_WHILE
Definition: splitc.c:1005
@ YYSYMBOL_initializer_list_opt
initializer_list
Definition: splitc.c:1048
@ YYSYMBOL_asmoperandsne
asmoperands
Definition: splitc.c:1117
@ YYSYMBOL_declaration
for_clause
Definition: splitc.c:1075
@ YYSYMBOL_asmtemplate
asmattr
Definition: splitc.c:1114
@ YYSYMBOL_TK_WSTRINGCON
TK_STRINGCON
Definition: splitc.c:922
@ YYSYMBOL_block
bracket_comma_expression
Definition: splitc.c:1060
@ YYSYMBOL_abstract_decl
type_name
Definition: splitc.c:1102
@ YYSYMBOL_TK_WHILE
TK_DEFAULT
Definition: splitc.c:1004
@ YYSYMBOL_TK_STAR_EQ
TK_MINUS_EQ
Definition: splitc.c:954
@ YYSYMBOL_TK_INF_INF_EQ
TK_CIRC_EQ
Definition: splitc.c:960
@ YYSYMBOL_attr_list_ne
attr
Definition: splitc.c:1111
@ YYSYMBOL_TK_RBRACE
TK_LPAREN
Definition: splitc.c:988
@ YYSYMBOL_TK_CHAR
TK_EOF
Definition: splitc.c:924
@ YYSYMBOL_YYACCEPT
TK_ADDROF
Definition: splitc.c:1031
@ YYSYMBOL_TK_SIGNED
TK_UNION
Definition: splitc.c:936
@ YYSYMBOL_statement
local_label_names
Definition: splitc.c:1068
@ YYSYMBOL_TK_CIRC
TK_PIPE
Definition: splitc.c:978
@ YYSYMBOL_TK_PLUS_PLUS
TK_SUP_SUP
Definition: splitc.c:984
@ YYSYMBOL_interpret
$accept
Definition: splitc.c:1032
@ YYSYMBOL_TK_TILDE
TK_PERCENT
Definition: splitc.c:975
@ YYSYMBOL_TK_REGISTER
TK_AUTO
Definition: splitc.c:946
@ YYSYMBOL_function_def
abs_direct_decl_opt
Definition: splitc.c:1105
@ YYSYMBOL_pointer
old_pardef
Definition: splitc.c:1099
@ YYSYMBOL_TK_FLOAT
TK_DOUBLE
Definition: splitc.c:929
@ YYSYMBOL_rest_par_list
parameter_list_startscope
Definition: splitc.c:1091
@ YYSYMBOL_TK_COMPLEX
TK_VOID
Definition: splitc.c:931
@ YYSYMBOL_TK_SLASH
TK_STAR
Definition: splitc.c:973
@ YYSYMBOL_YYEOF
Definition: splitc.c:913
@ YYSYMBOL_paren_comma_expression
comma_expression_opt
Definition: splitc.c:1058
@ YYSYMBOL_TK_ADDROF
TK_CAST
Definition: splitc.c:1030
@ YYSYMBOL_TK_ATTRIBUTE
TK_ELSE
Definition: splitc.c:1009
@ YYSYMBOL_direct_decl
declarator
Definition: splitc.c:1089
@ YYSYMBOL_TK_VOID
TK_FLOAT
Definition: splitc.c:930
@ YYSYMBOL_TK_FOR
TK_DO
Definition: splitc.c:1006
@ YYSYMBOL_TK_COMMA
TK_SEMICOLON
Definition: splitc.c:994
@ YYSYMBOL_168_8
decl_spec_list_opt_no_named
Definition: splitc.c:1081
@ YYSYMBOL_TK_FUNCTION__
TK_TYPEOF
Definition: splitc.c:1013
@ YYSYMBOL_TK_MSASM
TK_DECLSPEC
Definition: splitc.c:1020
@ YYSYMBOL_TK_DOUBLE
TK_UINT128
Definition: splitc.c:928
@ YYSYMBOL_TK_LABEL__
TK_PRETTY_FUNCTION__
Definition: splitc.c:1015
@ YYSYMBOL_TK_PRETTY_FUNCTION__
TK_FUNCTION__
Definition: splitc.c:1014
@ YYSYMBOL_eq_opt
initializer
Definition: splitc.c:1050
@ YYSYMBOL_TK_PLUS
TK_SUP_EQ
Definition: splitc.c:970
@ YYSYMBOL_TK_THREAD
TK_REGISTER
Definition: splitc.c:947
@ YYSYMBOL_type_name
pointer_opt
Definition: splitc.c:1101
@ YYSYMBOL_TK_EXTERN
TK_VOLATILE
Definition: splitc.c:941
@ YYSYMBOL_TK_ELSE
TK_IF
Definition: splitc.c:1008
@ YYSYMBOL_TK_ELLIPSIS
TK_COMMA
Definition: splitc.c:995
@ YYSYMBOL_TK_DEFAULT
TK_CASE
Definition: splitc.c:1003
@ YYSYMBOL_initializer_list
init_expression
Definition: splitc.c:1047
@ YYSYMBOL_TK_AT_TRANSFORMEXPR
TK_AT_TRANSFORM
Definition: splitc.c:1024
@ YYSYMBOL_string_constant
constant
Definition: splitc.c:1041
@ YYSYMBOL_attributes
function_def_start
Definition: splitc.c:1107
@ YYSYMBOL_TK_STAR
TK_MINUS
Definition: splitc.c:972
@ YYSYMBOL_field_decl
field_decl_list
Definition: splitc.c:1085
@ YYSYMBOL_YYEMPTY
Definition: splitc.c:912
@ YYSYMBOL_global
location
Definition: splitc.c:1036
@ YYSYMBOL_globals
file
Definition: splitc.c:1034
@ YYSYMBOL_function_def_start
function_def
Definition: splitc.c:1106
@ YYSYMBOL_TK_LPAREN
TK_RPAREN
Definition: splitc.c:987
@ YYSYMBOL_asmcloberlst_ne
asmclobber
Definition: splitc.c:1121
@ YYSYMBOL_TK_AT_TRANSFORM
TK_PRAGMA
Definition: splitc.c:1023
@ YYSYMBOL_one_string
wstring_list
Definition: splitc.c:1045
@ YYSYMBOL_asmoperands
asmoutputs
Definition: splitc.c:1116
@ YYSYMBOL_init_designators_opt
init_designators
Definition: splitc.c:1052
@ YYSYMBOL_TK_COMPLEXCON
TK_AT_NAME
Definition: splitc.c:1028
@ YYSYMBOL_TK_EQ
TK_ALIGNOF
Definition: splitc.c:951
@ YYSYMBOL_TK_CHARCON
TK_IDENT
Definition: splitc.c:917
@ YYSYMBOL_TK_UNSIGNED
TK_SIGNED
Definition: splitc.c:937
@ YYSYMBOL_TK_INTCON
TK_CHARCON
Definition: splitc.c:918
@ YYSYMBOL_TK_RETURN
TK_GOTO
Definition: splitc.c:1000
@ YYSYMBOL_TK_IDENT
"invalid token"
Definition: splitc.c:916
@ YYSYMBOL_attributes_with_asm
attributes
Definition: splitc.c:1108
@ YYSYMBOL_TK_RESTRICT
TK_CONST
Definition: splitc.c:944
@ YYSYMBOL_gcc_init_designators
init_designators_opt
Definition: splitc.c:1053
@ YYSYMBOL_TK_SUP
TK_INF
Definition: splitc.c:967
@ YYSYMBOL_TK_ENUM
TK_COMPLEX
Definition: splitc.c:932
@ YYSYMBOL_TK_BLOCKATTRIBUTE
TK_BUILTIN_VA_LIST
Definition: splitc.c:1018
@ YYSYMBOL_decl_spec_list_opt_no_named
decl_spec_list_opt
Definition: splitc.c:1080
@ YYSYMBOL_declaration_list
block_attrs
Definition: splitc.c:1064
@ YYSYMBOL_one_string_constant
string_constant
Definition: splitc.c:1042
@ YYSYMBOL_TK_STRINGCON
TK_NAMED_TYPE
Definition: splitc.c:921
@ YYSYMBOL_decl_spec_list_opt
decl_spec_list
Definition: splitc.c:1079
@ YYSYMBOL_TK_EXCLAM_EQ
TK_EQ_EQ
Definition: splitc.c:965
@ YYSYMBOL_TK_SEMICOLON
TK_COLON
Definition: splitc.c:993
@ YYSYMBOL_parameter_decl
rest_par_list1
Definition: splitc.c:1093
@ YYSYMBOL_TK_STATIC_DIMENSION
TK_THREAD
Definition: splitc.c:948
@ YYSYMBOL_TK_CAST
TK_COMPLEXCON
Definition: splitc.c:1029
@ YYSYMBOL_direct_old_proto_decl
old_proto_decl
Definition: splitc.c:1095
@ YYSYMBOL_TK_PIPE_EQ
TK_AND_EQ
Definition: splitc.c:958
@ YYSYMBOL_160_7
$@6
Definition: splitc.c:1073
#define TK_INT128
Definition: splitc.c:766
#define TK_RETURN
Definition: splitc.c:840
#define TK_ALIGNOF
Definition: splitc.c:790
#define YY_ASSERT(E)
Definition: splitc.c:1317
#define TK_STATIC_DIMENSION
Definition: splitc.c:788
#define YY_(Msgid)
Definition: splitc.c:1251
#define TK_RBRACKET
Definition: splitc.c:831
#define YYNOMEM
Definition: splitc.c:2777
#define TK_FUNCTION__
Definition: splitc.c:853
static string new_eq()
Definition: splitc.c:543
#define TK_INLINE
Definition: splitc.c:850
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
Definition: splitc.c:1298
void force_reset_preprocessor_scope_stack()
To be used by an error handler.
Definition: splitc.c:297
#define YYNSTATES
YYNSTATES – Number of states.
Definition: splitc.c:1458
string get_preprocessor_nth_scope(int n)
Definition: splitc.c:339
static string new_rbracket()
Definition: splitc.c:580
#define TK_INF_EQ
Definition: splitc.c:808
#define YY_IGNORE_USELESS_CAST_END
Definition: splitc.c:1313
#define TK_PIPE
Definition: splitc.c:817
#define TK_THREAD
Definition: splitc.c:787
void reset_preprocessor_scope_stack()
Definition: splitc.c:280
YYSTYPE splitc_lval
short yytype_int16
Definition: splitc.c:1162
#define yychar
Definition: splitc.c:74
static string new_rbrace()
Definition: splitc.c:564
static string new_star()
Definition: splitc.c:547
string get_preprocessor_current_scope()
Definition: splitc.c:327
static string new_colon()
Definition: splitc.c:555
#define YYEOF
Definition: splitc.c:753
static const yytype_int16 yydefact[]
YYDEFACT[STATE-NUM] – Default reduction number in state STATE-NUM.
Definition: splitc.c:1713
#define YYABORT
Definition: splitc.c:2775
#define TK_STAR
Definition: splitc.c:812
#define TK_MSASM
Definition: splitc.c:860
void csplit_parser_warning_func(const char *pips_func, const char *pips_file, const int pips_line, const string format,...)
Definition: splitc.c:174
#define TK_INF_INF
Definition: splitc.c:822
#define TK_BLOCKATTRIBUTE
Definition: splitc.c:858
#define TK_SLASH
Definition: splitc.c:813
#define TK_FLOATCON
Definition: splitc.c:759
#define TK_CASE
Definition: splitc.c:842
#define YYSTACK_BYTES(N)
The size of an array large to enough to hold all stacks, each with N elements.
Definition: splitc.c:1402
#define TK_DOT
Definition: splitc.c:803
#define TK_PLUS_PLUS
Definition: splitc.c:824
bool csplit_is_static_p
static int enum_counter = 0;
Definition: splitc.c:143
#define TK_REGISTER
Definition: splitc.c:786
#define TK_SLASH_EQ
Definition: splitc.c:795
yytype_int16 yy_state_t
Stored state numbers (used for stacks).
Definition: splitc.c:1238
#define TK_COMPLEX
Definition: splitc.c:771
void pop_preprocessor_scope()
Definition: splitc.c:316
#define TK_INF_INF_EQ
Definition: splitc.c:800
static const yytype_int16 yydefgoto[]
YYDEFGOTO[NTERM-NUM].
Definition: splitc.c:1800
#define YY_REDUCE_PRINT(Rule)
Definition: splitc.c:2927
#define TK_EXCLAM
Definition: splitc.c:819
#define YY_CAST(Type, Val)
Definition: splitc.c:596
static void yydestruct(const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
YYMAXDEPTH – maximum size the stacks can grow to (effective only if the built-in stack extension meth...
Definition: splitc.c:2957
static void reset_csplit_current_function_name()
Definition: splitc.c:129
#define TK_PLUS
Definition: splitc.c:810
#define TK_GOTO
Definition: splitc.c:839
#define TK_CAST
Definition: splitc.c:869
#define TK_PRAGMA
Definition: splitc.c:862
#define TK_EXCLAM_EQ
Definition: splitc.c:805
static const yytype_int16 yypact[]
YYPACT[STATE-NUM] – Index in YYTABLE of the portion describing STATE-NUM.
Definition: splitc.c:1639
#define TK_RPAREN
Definition: splitc.c:826
#define SCOPE_UNDEFINED
Each scope in the compilation unit has its own number.
Definition: splitc.c:270
static int number_of_signatures_built
If any of the strings is undefined, we are in trouble.
Definition: splitc.c:355
#define TK_STRUCT
Definition: splitc.c:773
#define yylex
Definition: splitc.c:69
#define TK_EQ
Definition: splitc.c:791
#define TK_SIZEOF
Definition: splitc.c:789
#define TK_CONST
Definition: splitc.c:783
#define YYerror
Definition: splitc.c:754
#define YY_NULLPTR
Definition: splitc.c:608
#define YYUNDEF
Definition: splitc.c:755
static string general_build_signature(bool arguments_are_defined_p, string s1, va_list *p_some_arguments)
Definition: splitc.c:372
int csplit_is_function
to know if the variable is declared inside or outside a function
Definition: splitc.c:120
void * malloc(YYSIZE_T)
#define TK_VOID
Definition: splitc.c:770
int csplit_is_external
The following global variables are used to store the information such as the scope,...
Definition: splitc.c:119
#define YYFINAL
!YYCOPY_NEEDED
Definition: splitc.c:1447
#define TK_ARROW
Definition: splitc.c:802
#define TK_UINT128
Definition: splitc.c:767
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
Definition: splitc.c:1559
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
Definition: splitc.c:2925
#define TK_INT
Definition: splitc.c:765
#define TK_TILDE
Definition: splitc.c:815
#define TK_LONG
Definition: splitc.c:778
@ YYENOMEM
Definition: splitc.c:2769
#define TK_NAMED_TYPE
Definition: splitc.c:760
static string new_signature(const string s)
Definition: splitc.c:358
static const yytype_int16 yypgoto[]
YYPGOTO[NTERM-NUM].
Definition: splitc.c:1785
#define TK_FOR
Definition: splitc.c:846
#define TK_MSATTR
Definition: splitc.c:861
#define yylval
Definition: splitc.c:73
#define YYNTOKENS
YYNTOKENS – Number of terminals.
Definition: splitc.c:1452
#define TK_FLOAT
Definition: splitc.c:769
static string new_comma()
Definition: splitc.c:539
unsigned char yytype_uint8
Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants.
Definition: splitc.c:1183
#define YY_STACK_PRINT(Bottom, Top)
Definition: splitc.c:2926
#define TK_TYPEOF
Definition: splitc.c:852
#define TK_AT_SPECIFIER
Definition: splitc.c:865
#define YYSIZE_T
Definition: splitc.c:1224
#define TK_ELLIPSIS
Definition: splitc.c:835
#define TK_SIGNED
Definition: splitc.c:776
#define yydebug
Definition: splitc.c:71
#define TK_INTCON
Definition: splitc.c:758
#define YY_IGNORE_USELESS_CAST_BEGIN
Definition: splitc.c:1312
static string new_lbrace()
Definition: splitc.c:560
#define TK_SUP
Definition: splitc.c:807
#define TK_COMMA
Definition: splitc.c:834
#define TK_AND_EQ
Definition: splitc.c:797
#define TK_ATTRIBUTE
Definition: splitc.c:849
#define TK_BUILTIN_VA_ARG
Definition: splitc.c:856
#define TK_STRINGCON
Definition: splitc.c:761
static const yytype_int8 yyr2[]
YYR2[RULE-NUM] – Number of symbols on the right-hand side of rule RULE-NUM.
Definition: splitc.c:2728
string csplit_definite_function_signature
Definition: splitc.c:126
#define TK_SWITCH
Definition: splitc.c:841
static void PopTypedef()
Definition: splitc.c:237
#define TK_VOLATILE
Definition: splitc.c:780
#define TK_CONTINUE
Definition: splitc.c:838
#define YYPTRDIFF_T
Definition: splitc.c:1210
static string build_signature(string s1,...)
All arguments must be defined.
Definition: splitc.c:447
#define yynerrs
Definition: splitc.c:72
void MakeTypedefStack()
Define some functions from the .l or .y since cproto cannot dig them out:
Definition: splitc.c:243
#define TK_STAR_EQ
Definition: splitc.c:794
#define TK_AND_AND
Definition: splitc.c:820
static void free_partial_signature(string s)
Definition: splitc.c:365
#define TK_QUEST
Definition: splitc.c:836
#define TK_CIRC_EQ
Definition: splitc.c:799
#define TK_ELSE
Definition: splitc.c:848
static stack TypedefStack
to know if this is a typedef name or not
Definition: splitc.c:227
#define TK_EXTERN
Definition: splitc.c:781
static string new_rparen()
Definition: splitc.c:572
static const yytype_int16 yytable[]
YYTABLE[YYPACT[STATE-NUM]] – What to do in state STATE-NUM.
Definition: splitc.c:1817
void ResetTypedefStack()
Definition: splitc.c:249
#define YYACCEPT
Definition: splitc.c:2774
#define TK_LBRACKET
Definition: splitc.c:830
#define yytable_value_is_error(Yyn)
Definition: splitc.c:1634
#define TK_CHARCON
Definition: splitc.c:757
#define TK_COLON
Definition: splitc.c:832
int splitc_parse(void)
void init_preprocessor_scope_stack()
Definition: splitc.c:274
#define TK_AT_EXPR
Definition: splitc.c:866
#define TK_ENUM
Definition: splitc.c:772
#define TK_IF
Definition: splitc.c:847
#define YYTRANSLATE(YYX)
YYTRANSLATE(TOKEN-NUM) – Symbol number corresponding to TOKEN-NUM as returned by yylex,...
Definition: splitc.c:1466
#define TK_INF
Definition: splitc.c:806
void push_new_preprocessor_scope()
Definition: splitc.c:307
string csplit_definite_function_name
Definition: splitc.c:125
#define TK_CIRC
Definition: splitc.c:818
#define TK_AT_TRANSFORMEXPR
Definition: splitc.c:864
#define YY_ATTRIBUTE_UNUSED
Definition: splitc.c:1268
#define TK_CHAR
Definition: splitc.c:764
#define TK_PIPE_PIPE
Definition: splitc.c:821
static const yytype_uint8 yystos[]
YYSTOS[STATE-NUM] – The symbol kind of the accessing symbol of state STATE-NUM.
Definition: splitc.c:2615
static void PushTypedef()
Definition: splitc.c:229
static void csplit_parser_warning_alist(const char *pips_func, const char *pips_file, const int pips_line, const string format, va_list *args)
Definition: splitc.c:146
static string safe_build_signature(string s1,...)
Arguments may be defined or not, but as soon as one is undefined, an undefined_string is returned.
Definition: splitc.c:457
#define TK_AUTO
Definition: splitc.c:785
void csplit_parser_error(const string msg)
Redundant with splitc_error()?
Definition: splitc.c:188
#define TK_TYPEDEF
Definition: splitc.c:774
#define TK_SUP_SUP_EQ
Definition: splitc.c:801
#define TK_DO
Definition: splitc.c:845
#define TK_MINUS
Definition: splitc.c:811
static string new_lbracket()
Definition: splitc.c:576
bool preprocessor_scope_stack_empty_p()
Definition: splitc.c:322
#define TK_LBRACE
Definition: splitc.c:829
#define TK_PERCENT
Definition: splitc.c:814
enum yytokentype yytoken_kind_t
Definition: splitc.c:749
#define TK_PRETTY_FUNCTION__
Definition: splitc.c:854
#define TK_AND
Definition: splitc.c:816
#define TK_DEFAULT
Definition: splitc.c:843
#define YYPOPSTACK(N)
int yy_state_fast_t
State numbers in computations.
Definition: splitc.c:1241
#define TK_EOF
Definition: splitc.c:763
#define TK_DOUBLE
Definition: splitc.c:768
#define TK_LPAREN
Definition: splitc.c:827
unsigned short yytype_uint16
Definition: splitc.c:1194
#define TK_UNSIGNED
Definition: splitc.c:777
#define TK_UNION
Definition: splitc.c:775
int check_signature_balance()
Definition: splitc.c:524
#define YYEMPTY
Token kinds.
Definition: splitc.c:752
#define TK_SUP_SUP
Definition: splitc.c:823
#define YYLAST
YYLAST – Last index in YYTABLE.
Definition: splitc.c:1449
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
Relocate STACK from its old location to the new one.
Definition: splitc.c:1413
#define yypact_value_is_default(Yyn)
Definition: splitc.c:1629
static int csplit_is_typedef
All the following global variables must be replaced by functions, once we have the preprocessor for C...
Definition: splitc.c:226
#define YYINITDEPTH
!YYDEBUG
Definition: splitc.c:2933
#define TK_WSTRINGCON
Definition: splitc.c:762
signed char yytype_int8
On compilers that do not define PTRDIFF_MAX etc., make sure <limits.h> and (if available) <stdint....
Definition: splitc.c:1154
static bool current_function_is_static_p
Definition: splitc.c:144
void free(void *)
#define TK_PLUS_EQ
Definition: splitc.c:792
#define YYERROR
Definition: splitc.c:2776
#define YYSIZEOF(X)
Definition: splitc.c:1234
#define TK_MINUS_MINUS
Definition: splitc.c:825
static const yytype_int16 yycheck[]
Definition: splitc.c:2215
#define YYSTACK_ALLOC
The parser invokes alloca or malloc; define the necessary symbols.
Definition: splitc.c:1358
#define TK_ASM
Definition: splitc.c:851
#define YYDPRINTF(Args)
Enable debugging if requested.
Definition: splitc.c:2924
#define TK_AT_NAME
Definition: splitc.c:867
#define TK_ADDROF
Definition: splitc.c:870
#define TK_LABEL__
Definition: splitc.c:855
#define YY_USE(E)
Suppress unused-variable warnings by "using" E.
Definition: splitc.c:1274
#define TK_RBRACE
Definition: splitc.c:828
#define yyerror
Definition: splitc.c:70
#define TK_COMPLEXCON
Definition: splitc.c:868
string csplit_current_function_name2
Definition: splitc.c:124
#define TK_PERCENT_EQ
Definition: splitc.c:796
#define uint_least8_t
Definition: stdint.in.h:229
#define int_least16_t
Definition: stdint.in.h:230
#define int_least8_t
7.18.1.2.
Definition: stdint.in.h:228
#define uint_least16_t
Definition: stdint.in.h:231
the stack head
Definition: stack.c:62
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
Value type.
Definition: genread.h:115
expression expression
Definition: cyacc.h:185
statement statement
Definition: cyacc.h:186
syntax syntax
Definition: splitc.c:887
string string
Definition: cyacc.h:187
cons * liste
Definition: cyacc.h:183
dimension dimension
Definition: splitc.c:881
basic basic
Definition: splitc.c:878
parameter parameter
Definition: cyacc.h:189
char character
Definition: splitc.c:879
value value
Definition: splitc.c:890
entity entity
Definition: cyacc.h:184
int integer
Definition: cyacc.h:190
tag tag
Definition: splitc.c:888
type type
Definition: cyacc.h:188
INFRINGES ON USER NAME SPACE.
Definition: genread_yacc.c:608
YYSTYPE yyvs_alloc
Definition: genread_yacc.c:610
yy_state_t yyss_alloc
Definition: genread_yacc.c:609