PIPS
genread_yacc.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 genread_parse
69 #define yylex genread_lex
70 #define yyerror genread_error
71 #define yydebug genread_debug
72 #define yynerrs genread_nerrs
73 #define yylval genread_lval
74 #define yychar genread_char
75 
76 /* First part of user prologue. */
77 #line 1 "read.y"
78 
79 /*
80 
81  $Id: read.y 1361 2016-07-01 11:57:40Z coelho $
82 
83  Copyright 1989-2014 MINES ParisTech
84 
85  This file is part of NewGen.
86 
87  NewGen is free software: you can redistribute it and/or modify it under the
88  terms of the GNU General Public License as published by the Free Software
89  Foundation, either version 3 of the License, or any later version.
90 
91  NewGen is distributed in the hope that it will be useful, but WITHOUT ANY
92  WARRANTY; without even the implied warranty of MERCHANTABILITY or
93  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
94  License for more details.
95 
96  You should have received a copy of the GNU General Public License along with
97  NewGen. If not, see <http://www.gnu.org/licenses/>.
98 
99 */
100 
101 /* The syntax of objects printed by GEN_WRITE. */
102 
103 #include <stdio.h>
104 #include <stdlib.h>
105 #include <stdint.h>
106 #include <string.h>
107 
108 #include "genC.h"
109 #include "newgen_include.h"
110 
111 extern void newgen_lexer_position(FILE *);
112 
113 #define YYERROR_VERBOSE 1 /* better error messages by bison */
114 
115 extern int genread_input(void);
116 extern void yyerror(const char*);
117 extern FILE * genread_in;
118 
119 /* This constant should be adapted to the particular need of the application */
120 
121 /* set to 10000 by BC - necessary in PIPS for DYNA */
122 /* Should be a compilation option ? */
123 /* CA: pb avec COX si a 10000...
124  p'tet mauvaise recursion dans le parser de newgen?
125 */
126 #define YYMAXDEPTH 100000
127 
128 /* User selectable options. */
129 
131 
132 /* Where the root will be. */
133 
135 
136 /* The SHARED_TABLE
137  * maps a shared pointer number to its gen_chunk pointer value.
138  * warning: big hack.
139  */
140 static size_t shared_number;
141 static size_t shared_size;
143 
144 /* The GEN_TABULATED_NAMES hash table maps ids to index in the table of
145  the tabulated domains. In case of multiple definition, if the previous
146  value is negative, then it came from a REF (by READ_TABULATED) and
147  no error is reported. */
148 
149 /* Management of forward references in read */
150 
152 
153 static void * read_external(int);
154 static gen_chunk * make_def(gen_chunk *);
155 static gen_chunk * make_ref(int, gen_chunk *);
156 static gen_chunk * chunk_for_domain(int);
157 
161 
162 
163 #line 164 "y.tab.c"
164 
165 # ifndef YY_CAST
166 # ifdef __cplusplus
167 # define YY_CAST(Type, Val) static_cast<Type> (Val)
168 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
169 # else
170 # define YY_CAST(Type, Val) ((Type) (Val))
171 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
172 # endif
173 # endif
174 # ifndef YY_NULLPTR
175 # if defined __cplusplus
176 # if 201103L <= __cplusplus
177 # define YY_NULLPTR nullptr
178 # else
179 # define YY_NULLPTR 0
180 # endif
181 # else
182 # define YY_NULLPTR ((void*)0)
183 # endif
184 # endif
185 
186 /* Use api.header.include to #include this header
187  instead of duplicating it here. */
188 #ifndef YY_GENREAD_Y_TAB_H_INCLUDED
189 # define YY_GENREAD_Y_TAB_H_INCLUDED
190 /* Debug traces. */
191 #ifndef YYDEBUG
192 # define YYDEBUG 0
193 #endif
194 #if YYDEBUG
195 extern int genread_debug;
196 #endif
197 
198 /* Token kinds. */
199 #ifndef YYTOKENTYPE
200 # define YYTOKENTYPE
202  {
203  YYEMPTY = -2,
204  YYEOF = 0, /* "end of file" */
205  YYerror = 256, /* error */
206  YYUNDEF = 257, /* "invalid token" */
207  CHUNK_BEGIN = 258, /* CHUNK_BEGIN */
208  VECTOR_BEGIN = 259, /* VECTOR_BEGIN */
209  ARROW_BEGIN = 260, /* ARROW_BEGIN */
210  READ_BOOL = 261, /* READ_BOOL */
211  TABULATED_BEGIN = 262, /* TABULATED_BEGIN */
212  LP = 263, /* LP */
213  RP = 264, /* RP */
214  LC = 265, /* LC */
215  RC = 266, /* RC */
216  LB = 267, /* LB */
217  SHARED_POINTER = 268, /* SHARED_POINTER */
218  READ_EXTERNAL = 269, /* READ_EXTERNAL */
219  READ_DEF = 270, /* READ_DEF */
220  READ_REF = 271, /* READ_REF */
221  READ_NULL = 272, /* READ_NULL */
222  READ_LIST_UNDEFINED = 273, /* READ_LIST_UNDEFINED */
223  READ_SET_UNDEFINED = 274, /* READ_SET_UNDEFINED */
224  READ_ARRAY_UNDEFINED = 275, /* READ_ARRAY_UNDEFINED */
225  READ_STRING = 276, /* READ_STRING */
226  READ_UNIT = 277, /* READ_UNIT */
227  READ_CHAR = 278, /* READ_CHAR */
228  READ_INT = 279, /* READ_INT */
229  READ_FLOAT = 280 /* READ_FLOAT */
230  };
231  typedef enum yytokentype yytoken_kind_t;
232 #endif
233 /* Token kinds. */
234 #define YYEMPTY -2
235 #define YYEOF 0
236 #define YYerror 256
237 #define YYUNDEF 257
238 #define CHUNK_BEGIN 258
239 #define VECTOR_BEGIN 259
240 #define ARROW_BEGIN 260
241 #define READ_BOOL 261
242 #define TABULATED_BEGIN 262
243 #define LP 263
244 #define RP 264
245 #define LC 265
246 #define RC 266
247 #define LB 267
248 #define SHARED_POINTER 268
249 #define READ_EXTERNAL 269
250 #define READ_DEF 270
251 #define READ_REF 271
252 #define READ_NULL 272
253 #define READ_LIST_UNDEFINED 273
254 #define READ_SET_UNDEFINED 274
255 #define READ_ARRAY_UNDEFINED 275
256 #define READ_STRING 276
257 #define READ_UNIT 277
258 #define READ_CHAR 278
259 #define READ_INT 279
260 #define READ_FLOAT 280
261 
262 /* Value type. */
263 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
264 union YYSTYPE
265 {
266 #line 108 "read.y"
267 
268  gen_chunk chunk ;
269  gen_chunk *chunkp ;
270  cons *consp ;
271  intptr_t val ;
272  char * s;
273  double d;
274  char c;
275 
276 #line 277 "y.tab.c"
277 
278 };
279 typedef union YYSTYPE YYSTYPE;
280 # define YYSTYPE_IS_TRIVIAL 1
281 # define YYSTYPE_IS_DECLARED 1
282 #endif
283 
284 
285 extern YYSTYPE genread_lval;
286 
287 
288 int genread_parse (void);
289 
290 
291 #endif /* !YY_GENREAD_Y_TAB_H_INCLUDED */
292 /* Symbol kind. */
294 {
296  YYSYMBOL_YYEOF = 0, /* "end of file" */
297  YYSYMBOL_YYerror = 1, /* error */
298  YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
299  YYSYMBOL_CHUNK_BEGIN = 3, /* CHUNK_BEGIN */
300  YYSYMBOL_VECTOR_BEGIN = 4, /* VECTOR_BEGIN */
301  YYSYMBOL_ARROW_BEGIN = 5, /* ARROW_BEGIN */
302  YYSYMBOL_READ_BOOL = 6, /* READ_BOOL */
303  YYSYMBOL_TABULATED_BEGIN = 7, /* TABULATED_BEGIN */
304  YYSYMBOL_LP = 8, /* LP */
305  YYSYMBOL_RP = 9, /* RP */
306  YYSYMBOL_LC = 10, /* LC */
307  YYSYMBOL_RC = 11, /* RC */
308  YYSYMBOL_LB = 12, /* LB */
309  YYSYMBOL_SHARED_POINTER = 13, /* SHARED_POINTER */
310  YYSYMBOL_READ_EXTERNAL = 14, /* READ_EXTERNAL */
311  YYSYMBOL_READ_DEF = 15, /* READ_DEF */
312  YYSYMBOL_READ_REF = 16, /* READ_REF */
313  YYSYMBOL_READ_NULL = 17, /* READ_NULL */
314  YYSYMBOL_READ_LIST_UNDEFINED = 18, /* READ_LIST_UNDEFINED */
315  YYSYMBOL_READ_SET_UNDEFINED = 19, /* READ_SET_UNDEFINED */
316  YYSYMBOL_READ_ARRAY_UNDEFINED = 20, /* READ_ARRAY_UNDEFINED */
317  YYSYMBOL_READ_STRING = 21, /* READ_STRING */
318  YYSYMBOL_READ_UNIT = 22, /* READ_UNIT */
319  YYSYMBOL_READ_CHAR = 23, /* READ_CHAR */
320  YYSYMBOL_READ_INT = 24, /* READ_INT */
321  YYSYMBOL_READ_FLOAT = 25, /* READ_FLOAT */
322  YYSYMBOL_YYACCEPT = 26, /* $accept */
323  YYSYMBOL_Read = 27, /* Read */
324  YYSYMBOL_Nb_of_shared_pointers = 28, /* Nb_of_shared_pointers */
325  YYSYMBOL_Contents = 29, /* Contents */
326  YYSYMBOL_Chunk = 30, /* Chunk */
327  YYSYMBOL_31_1 = 31, /* $@1 */
328  YYSYMBOL_Shared_chunk = 32, /* Shared_chunk */
329  YYSYMBOL_Type = 33, /* Type */
330  YYSYMBOL_Datas = 34, /* Datas */
331  YYSYMBOL_Datas2 = 35, /* Datas2 */
332  YYSYMBOL_Datas3 = 36, /* Datas3 */
333  YYSYMBOL_Sparse_Datas = 37, /* Sparse_Datas */
334  YYSYMBOL_Data = 38, /* Data */
335  YYSYMBOL_Basis = 39, /* Basis */
336  YYSYMBOL_Int = 40, /* Int */
337  YYSYMBOL_String = 41 /* String */
338 };
339 typedef enum yysymbol_kind_t yysymbol_kind_t;
340 
341 
342 
343 
344 #ifdef short
345 # undef short
346 #endif
347 
348 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
349  <limits.h> and (if available) <stdint.h> are included
350  so that the code can choose integer types of a good width. */
351 
352 #ifndef __PTRDIFF_MAX__
353 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
354 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
355 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
356 # define YY_STDINT_H
357 # endif
358 #endif
359 
360 /* Narrow types that promote to a signed type and that can represent a
361  signed or unsigned integer of at least N bits. In tables they can
362  save space and decrease cache pressure. Promoting to a signed type
363  helps avoid bugs in integer arithmetic. */
364 
365 #ifdef __INT_LEAST8_MAX__
366 typedef __INT_LEAST8_TYPE__ yytype_int8;
367 #elif defined YY_STDINT_H
368 typedef int_least8_t yytype_int8;
369 #else
370 typedef signed char yytype_int8;
371 #endif
372 
373 #ifdef __INT_LEAST16_MAX__
374 typedef __INT_LEAST16_TYPE__ yytype_int16;
375 #elif defined YY_STDINT_H
377 #else
378 typedef short yytype_int16;
379 #endif
380 
381 /* Work around bug in HP-UX 11.23, which defines these macros
382  incorrectly for preprocessor constants. This workaround can likely
383  be removed in 2023, as HPE has promised support for HP-UX 11.23
384  (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
385  <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
386 #ifdef __hpux
387 # undef UINT_LEAST8_MAX
388 # undef UINT_LEAST16_MAX
389 # define UINT_LEAST8_MAX 255
390 # define UINT_LEAST16_MAX 65535
391 #endif
392 
393 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
394 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
395 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
396  && UINT_LEAST8_MAX <= INT_MAX)
398 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
399 typedef unsigned char yytype_uint8;
400 #else
401 typedef short yytype_uint8;
402 #endif
403 
404 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
405 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
406 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
407  && UINT_LEAST16_MAX <= INT_MAX)
409 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
410 typedef unsigned short yytype_uint16;
411 #else
412 typedef int yytype_uint16;
413 #endif
414 
415 #ifndef YYPTRDIFF_T
416 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
417 # define YYPTRDIFF_T __PTRDIFF_TYPE__
418 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
419 # elif defined PTRDIFF_MAX
420 # ifndef ptrdiff_t
421 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
422 # endif
423 # define YYPTRDIFF_T ptrdiff_t
424 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
425 # else
426 # define YYPTRDIFF_T long
427 # define YYPTRDIFF_MAXIMUM LONG_MAX
428 # endif
429 #endif
430 
431 #ifndef YYSIZE_T
432 # ifdef __SIZE_TYPE__
433 # define YYSIZE_T __SIZE_TYPE__
434 # elif defined size_t
435 # define YYSIZE_T size_t
436 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
437 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
438 # define YYSIZE_T size_t
439 # else
440 # define YYSIZE_T unsigned
441 # endif
442 #endif
443 
444 #define YYSIZE_MAXIMUM \
445  YY_CAST (YYPTRDIFF_T, \
446  (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
447  ? YYPTRDIFF_MAXIMUM \
448  : YY_CAST (YYSIZE_T, -1)))
449 
450 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
451 
452 
453 /* Stored state numbers (used for stacks). */
455 
456 /* State numbers in computations. */
457 typedef int yy_state_fast_t;
458 
459 #ifndef YY_
460 # if defined YYENABLE_NLS && YYENABLE_NLS
461 # if ENABLE_NLS
462 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
463 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
464 # endif
465 # endif
466 # ifndef YY_
467 # define YY_(Msgid) Msgid
468 # endif
469 #endif
470 
471 
472 #ifndef YY_ATTRIBUTE_PURE
473 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
474 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
475 # else
476 # define YY_ATTRIBUTE_PURE
477 # endif
478 #endif
479 
480 #ifndef YY_ATTRIBUTE_UNUSED
481 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
482 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
483 # else
484 # define YY_ATTRIBUTE_UNUSED
485 # endif
486 #endif
487 
488 /* Suppress unused-variable warnings by "using" E. */
489 #if ! defined lint || defined __GNUC__
490 # define YY_USE(E) ((void) (E))
491 #else
492 # define YY_USE(E) /* empty */
493 #endif
494 
495 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
496 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
497 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
498 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
499  _Pragma ("GCC diagnostic push") \
500  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
501 # else
502 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
503  _Pragma ("GCC diagnostic push") \
504  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
505  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
506 # endif
507 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
508  _Pragma ("GCC diagnostic pop")
509 #else
510 # define YY_INITIAL_VALUE(Value) Value
511 #endif
512 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
513 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
514 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
515 #endif
516 #ifndef YY_INITIAL_VALUE
517 # define YY_INITIAL_VALUE(Value) /* Nothing. */
518 #endif
519 
520 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
521 # define YY_IGNORE_USELESS_CAST_BEGIN \
522  _Pragma ("GCC diagnostic push") \
523  _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
524 # define YY_IGNORE_USELESS_CAST_END \
525  _Pragma ("GCC diagnostic pop")
526 #endif
527 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
528 # define YY_IGNORE_USELESS_CAST_BEGIN
529 # define YY_IGNORE_USELESS_CAST_END
530 #endif
531 
532 
533 #define YY_ASSERT(E) ((void) (0 && (E)))
534 
535 #if !defined yyoverflow
536 
537 /* The parser invokes alloca or malloc; define the necessary symbols. */
538 
539 # ifdef YYSTACK_USE_ALLOCA
540 # if YYSTACK_USE_ALLOCA
541 # ifdef __GNUC__
542 # define YYSTACK_ALLOC __builtin_alloca
543 # elif defined __BUILTIN_VA_ARG_INCR
544 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
545 # elif defined _AIX
546 # define YYSTACK_ALLOC __alloca
547 # elif defined _MSC_VER
548 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
549 # define alloca _alloca
550 # else
551 # define YYSTACK_ALLOC alloca
552 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
553 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
554  /* Use EXIT_SUCCESS as a witness for stdlib.h. */
555 # ifndef EXIT_SUCCESS
556 # define EXIT_SUCCESS 0
557 # endif
558 # endif
559 # endif
560 # endif
561 # endif
562 
563 # ifdef YYSTACK_ALLOC
564  /* Pacify GCC's 'empty if-body' warning. */
565 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
566 # ifndef YYSTACK_ALLOC_MAXIMUM
567  /* The OS might guarantee only one guard page at the bottom of the stack,
568  and a page size can be as small as 4096 bytes. So we cannot safely
569  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
570  to allow for a few compiler-allocated temporary stack slots. */
571 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
572 # endif
573 # else
574 # define YYSTACK_ALLOC YYMALLOC
575 # define YYSTACK_FREE YYFREE
576 # ifndef YYSTACK_ALLOC_MAXIMUM
577 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
578 # endif
579 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
580  && ! ((defined YYMALLOC || defined malloc) \
581  && (defined YYFREE || defined free)))
582 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
583 # ifndef EXIT_SUCCESS
584 # define EXIT_SUCCESS 0
585 # endif
586 # endif
587 # ifndef YYMALLOC
588 # define YYMALLOC malloc
589 # if ! defined malloc && ! defined EXIT_SUCCESS
590 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
591 # endif
592 # endif
593 # ifndef YYFREE
594 # define YYFREE free
595 # if ! defined free && ! defined EXIT_SUCCESS
596 void free (void *); /* INFRINGES ON USER NAME SPACE */
597 # endif
598 # endif
599 # endif
600 #endif /* !defined yyoverflow */
601 
602 #if (! defined yyoverflow \
603  && (! defined __cplusplus \
604  || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
605 
606 /* A type that is properly aligned for any stack member. */
607 union yyalloc
608 {
611 };
612 
613 /* The size of the maximum gap between one aligned stack and the next. */
614 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
615 
616 /* The size of an array large to enough to hold all stacks, each with
617  N elements. */
618 # define YYSTACK_BYTES(N) \
619  ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
620  + YYSTACK_GAP_MAXIMUM)
621 
622 # define YYCOPY_NEEDED 1
623 
624 /* Relocate STACK from its old location to the new one. The
625  local variables YYSIZE and YYSTACKSIZE give the old and new number of
626  elements in the stack, and YYPTR gives the new location of the
627  stack. Advance YYPTR to a properly aligned location for the next
628  stack. */
629 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
630  do \
631  { \
632  YYPTRDIFF_T yynewbytes; \
633  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
634  Stack = &yyptr->Stack_alloc; \
635  yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
636  yyptr += yynewbytes / YYSIZEOF (*yyptr); \
637  } \
638  while (0)
639 
640 #endif
641 
642 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
643 /* Copy COUNT objects from SRC to DST. The source and destination do
644  not overlap. */
645 # ifndef YYCOPY
646 # if defined __GNUC__ && 1 < __GNUC__
647 # define YYCOPY(Dst, Src, Count) \
648  __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
649 # else
650 # define YYCOPY(Dst, Src, Count) \
651  do \
652  { \
653  YYPTRDIFF_T yyi; \
654  for (yyi = 0; yyi < (Count); yyi++) \
655  (Dst)[yyi] = (Src)[yyi]; \
656  } \
657  while (0)
658 # endif
659 # endif
660 #endif /* !YYCOPY_NEEDED */
661 
662 /* YYFINAL -- State number of the termination state. */
663 #define YYFINAL 5
664 /* YYLAST -- Last index in YYTABLE. */
665 #define YYLAST 179
666 
667 /* YYNTOKENS -- Number of terminals. */
668 #define YYNTOKENS 26
669 /* YYNNTS -- Number of nonterminals. */
670 #define YYNNTS 16
671 /* YYNRULES -- Number of rules. */
672 #define YYNRULES 40
673 /* YYNSTATES -- Number of states. */
674 #define YYNSTATES 63
675 
676 /* YYMAXUTOK -- Last valid token kind. */
677 #define YYMAXUTOK 280
678 
679 
680 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
681  as returned by yylex, with out-of-bounds checking. */
682 #define YYTRANSLATE(YYX) \
683  (0 <= (YYX) && (YYX) <= YYMAXUTOK \
684  ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
685  : YYSYMBOL_YYUNDEF)
686 
687 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
688  as returned by yylex. */
689 static const yytype_int8 yytranslate[] =
690 {
691  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
692  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
693  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
694  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
695  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
696  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
697  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
698  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
699  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
700  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
701  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
702  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
703  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
704  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
705  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
706  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
707  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
708  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
709  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
710  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
711  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
712  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
713  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
714  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
715  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
716  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
717  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
718  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
719  25
720 };
721 
722 #if YYDEBUG
723 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
724 static const yytype_int16 yyrline[] =
725 {
726  0, 130, 130, 149, 164, 168, 177, 176, 211, 212,
727  215, 223, 224, 229, 230, 234, 249, 252, 255, 258,
728  259, 260, 261, 262, 276, 277, 301, 316, 317, 325,
729  326, 327, 328, 329, 330, 331, 332, 333, 334, 337,
730  340
731 };
732 #endif
733 
734 /** Accessing symbol of state STATE. */
735 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
736 
737 #if YYDEBUG || 0
738 /* The user-facing name of the symbol whose (internal) number is
739  YYSYMBOL. No bounds checking. */
740 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
741 
742 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
743  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
744 static const char *const yytname[] =
745 {
746  "\"end of file\"", "error", "\"invalid token\"", "CHUNK_BEGIN",
747  "VECTOR_BEGIN", "ARROW_BEGIN", "READ_BOOL", "TABULATED_BEGIN", "LP",
748  "RP", "LC", "RC", "LB", "SHARED_POINTER", "READ_EXTERNAL", "READ_DEF",
749  "READ_REF", "READ_NULL", "READ_LIST_UNDEFINED", "READ_SET_UNDEFINED",
750  "READ_ARRAY_UNDEFINED", "READ_STRING", "READ_UNIT", "READ_CHAR",
751  "READ_INT", "READ_FLOAT", "$accept", "Read", "Nb_of_shared_pointers",
752  "Contents", "Chunk", "$@1", "Shared_chunk", "Type", "Datas", "Datas2",
753  "Datas3", "Sparse_Datas", "Data", "Basis", "Int", "String", YY_NULLPTR
754 };
755 
756 static const char *
758 {
759  return yytname[yysymbol];
760 }
761 #endif
762 
763 #define YYPACT_NINF (-35)
764 
765 #define yypact_value_is_default(Yyn) \
766  ((Yyn) == YYPACT_NINF)
767 
768 #define YYTABLE_NINF (-1)
769 
770 #define yytable_value_is_error(Yyn) \
771  0
772 
773 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
774  STATE-NUM. */
775 static const yytype_int16 yypact[] =
776 {
777  -15, -35, 11, -2, -35, -35, -15, -15, -35, -35,
778  9, -35, -35, -35, -15, 44, -35, -15, -35, -15,
779  -35, -35, -15, -15, -15, 1, -15, -35, -35, -35,
780  -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
781  -35, -35, 66, -35, 88, -35, -35, -35, -35, -1,
782  110, -6, -35, -35, -35, 132, -35, -35, -35, -35,
783  154, -35, -35
784 };
785 
786 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
787  Performed when YYTABLE does not specify something else to do. Zero
788  means the default is an error. */
789 static const yytype_int8 yydefact[] =
790 {
791  0, 39, 0, 9, 3, 1, 0, 0, 2, 4,
792  0, 14, 10, 8, 0, 9, 6, 0, 12, 0,
793  12, 5, 0, 0, 0, 9, 0, 38, 20, 22,
794  24, 40, 29, 31, 33, 27, 13, 19, 32, 34,
795  16, 18, 9, 30, 9, 12, 28, 35, 36, 0,
796  9, 0, 26, 11, 21, 9, 37, 7, 15, 25,
797  9, 23, 17
798 };
799 
800 /* YYPGOTO[NTERM-NUM]. */
801 static const yytype_int8 yypgoto[] =
802 {
803  -35, -35, -35, -35, 5, -35, -35, -10, -18, -35,
804  -35, -35, -14, -35, 0, -34
805 };
806 
807 /* YYDEFGOTO[NTERM-NUM]. */
808 static const yytype_int8 yydefgoto[] =
809 {
810  0, 2, 3, 8, 35, 40, 10, 11, 42, 15,
811  50, 51, 53, 37, 38, 39
812 };
813 
814 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
815  positive, shift that token. If negative, reduce the rule whose
816  number is the opposite. If YYTABLE_NINF, syntax error. */
817 static const yytype_int8 yytable[] =
818 {
819  4, 36, 44, 59, 16, 6, 12, 13, 9, 1,
820  7, 5, 14, 7, 12, 56, 49, 41, 1, 43,
821  31, 0, 45, 46, 47, 0, 12, 55, 0, 0,
822  48, 0, 0, 0, 0, 0, 58, 0, 0, 0,
823  0, 0, 0, 0, 0, 0, 62, 0, 17, 18,
824  19, 60, 20, 21, 22, 0, 7, 23, 24, 25,
825  26, 27, 28, 29, 30, 31, 32, 33, 1, 34,
826  17, 18, 19, 0, 20, 52, 22, 0, 7, 23,
827  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
828  1, 34, 17, 18, 19, 0, 20, 54, 22, 0,
829  7, 23, 24, 25, 26, 27, 28, 29, 30, 31,
830  32, 33, 1, 34, 17, 18, 19, 0, 20, 57,
831  22, 0, 7, 23, 24, 25, 26, 27, 28, 29,
832  30, 31, 32, 33, 1, 34, 17, 18, 19, 0,
833  20, 0, 22, 61, 7, 23, 24, 25, 26, 27,
834  28, 29, 30, 31, 32, 33, 1, 34, 17, 18,
835  19, 0, 20, 0, 22, 0, 7, 23, 24, 25,
836  26, 27, 28, 29, 30, 31, 32, 33, 1, 34
837 };
838 
839 static const yytype_int8 yycheck[] =
840 {
841  0, 15, 20, 9, 14, 7, 6, 7, 3, 24,
842  12, 0, 3, 12, 14, 49, 26, 17, 24, 19,
843  21, -1, 22, 23, 24, -1, 26, 45, -1, -1,
844  25, -1, -1, -1, -1, -1, 50, -1, -1, -1,
845  -1, -1, -1, -1, -1, -1, 60, -1, 4, 5,
846  6, 51, 8, 9, 10, -1, 12, 13, 14, 15,
847  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
848  4, 5, 6, -1, 8, 9, 10, -1, 12, 13,
849  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
850  24, 25, 4, 5, 6, -1, 8, 9, 10, -1,
851  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
852  22, 23, 24, 25, 4, 5, 6, -1, 8, 9,
853  10, -1, 12, 13, 14, 15, 16, 17, 18, 19,
854  20, 21, 22, 23, 24, 25, 4, 5, 6, -1,
855  8, -1, 10, 11, 12, 13, 14, 15, 16, 17,
856  18, 19, 20, 21, 22, 23, 24, 25, 4, 5,
857  6, -1, 8, -1, 10, -1, 12, 13, 14, 15,
858  16, 17, 18, 19, 20, 21, 22, 23, 24, 25
859 };
860 
861 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
862  state STATE-NUM. */
863 static const yytype_int8 yystos[] =
864 {
865  0, 24, 27, 28, 40, 0, 7, 12, 29, 30,
866  32, 33, 40, 40, 3, 35, 33, 4, 5, 6,
867  8, 9, 10, 13, 14, 15, 16, 17, 18, 19,
868  20, 21, 22, 23, 25, 30, 38, 39, 40, 41,
869  31, 40, 34, 40, 34, 40, 40, 40, 30, 33,
870  36, 37, 9, 38, 9, 34, 41, 9, 38, 9,
871  40, 11, 38
872 };
873 
874 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
875 static const yytype_int8 yyr1[] =
876 {
877  0, 26, 27, 28, 29, 29, 31, 30, 32, 32,
878  33, 34, 34, 35, 35, 36, 36, 37, 37, 38,
879  38, 38, 38, 38, 38, 38, 38, 38, 38, 39,
880  39, 39, 39, 39, 39, 39, 39, 39, 39, 40,
881  41
882 };
883 
884 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
885 static const yytype_int8 yyr2[] =
886 {
887  0, 2, 2, 1, 1, 4, 0, 6, 2, 0,
888  1, 2, 0, 2, 0, 2, 0, 3, 0, 1,
889  1, 3, 1, 4, 1, 4, 3, 1, 2, 1,
890  2, 1, 1, 1, 1, 2, 2, 3, 1, 1,
891  1
892 };
893 
894 
895 enum { YYENOMEM = -2 };
896 
897 #define yyerrok (yyerrstatus = 0)
898 #define yyclearin (yychar = YYEMPTY)
899 
900 #define YYACCEPT goto yyacceptlab
901 #define YYABORT goto yyabortlab
902 #define YYERROR goto yyerrorlab
903 #define YYNOMEM goto yyexhaustedlab
904 
905 
906 #define YYRECOVERING() (!!yyerrstatus)
907 
908 #define YYBACKUP(Token, Value) \
909  do \
910  if (yychar == YYEMPTY) \
911  { \
912  yychar = (Token); \
913  yylval = (Value); \
914  YYPOPSTACK (yylen); \
915  yystate = *yyssp; \
916  goto yybackup; \
917  } \
918  else \
919  { \
920  yyerror (YY_("syntax error: cannot back up")); \
921  YYERROR; \
922  } \
923  while (0)
924 
925 /* Backward compatibility with an undocumented macro.
926  Use YYerror or YYUNDEF. */
927 #define YYERRCODE YYUNDEF
928 
929 
930 /* Enable debugging if requested. */
931 #if YYDEBUG
932 
933 # ifndef YYFPRINTF
934 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
935 # define YYFPRINTF fprintf
936 # endif
937 
938 # define YYDPRINTF(Args) \
939 do { \
940  if (yydebug) \
941  YYFPRINTF Args; \
942 } while (0)
943 
944 
945 
946 
947 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
948 do { \
949  if (yydebug) \
950  { \
951  YYFPRINTF (stderr, "%s ", Title); \
952  yy_symbol_print (stderr, \
953  Kind, Value); \
954  YYFPRINTF (stderr, "\n"); \
955  } \
956 } while (0)
957 
958 
959 /*-----------------------------------.
960 | Print this symbol's value on YYO. |
961 `-----------------------------------*/
962 
963 static void
964 yy_symbol_value_print (FILE *yyo,
965  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
966 {
967  FILE *yyoutput = yyo;
968  YY_USE (yyoutput);
969  if (!yyvaluep)
970  return;
972  YY_USE (yykind);
974 }
975 
976 
977 /*---------------------------.
978 | Print this symbol on YYO. |
979 `---------------------------*/
980 
981 static void
982 yy_symbol_print (FILE *yyo,
983  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
984 {
985  YYFPRINTF (yyo, "%s %s (",
986  yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
987 
988  yy_symbol_value_print (yyo, yykind, yyvaluep);
989  YYFPRINTF (yyo, ")");
990 }
991 
992 /*------------------------------------------------------------------.
993 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
994 | TOP (included). |
995 `------------------------------------------------------------------*/
996 
997 static void
998 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
999 {
1000  YYFPRINTF (stderr, "Stack now");
1001  for (; yybottom <= yytop; yybottom++)
1002  {
1003  int yybot = *yybottom;
1004  YYFPRINTF (stderr, " %d", yybot);
1005  }
1006  YYFPRINTF (stderr, "\n");
1007 }
1008 
1009 # define YY_STACK_PRINT(Bottom, Top) \
1010 do { \
1011  if (yydebug) \
1012  yy_stack_print ((Bottom), (Top)); \
1013 } while (0)
1014 
1015 
1016 /*------------------------------------------------.
1017 | Report that the YYRULE is going to be reduced. |
1018 `------------------------------------------------*/
1019 
1020 static void
1021 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
1022  int yyrule)
1023 {
1024  int yylno = yyrline[yyrule];
1025  int yynrhs = yyr2[yyrule];
1026  int yyi;
1027  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
1028  yyrule - 1, yylno);
1029  /* The symbols being reduced. */
1030  for (yyi = 0; yyi < yynrhs; yyi++)
1031  {
1032  YYFPRINTF (stderr, " $%d = ", yyi + 1);
1033  yy_symbol_print (stderr,
1034  YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
1035  &yyvsp[(yyi + 1) - (yynrhs)]);
1036  YYFPRINTF (stderr, "\n");
1037  }
1038 }
1039 
1040 # define YY_REDUCE_PRINT(Rule) \
1041 do { \
1042  if (yydebug) \
1043  yy_reduce_print (yyssp, yyvsp, Rule); \
1044 } while (0)
1045 
1046 /* Nonzero means print parse trace. It is left uninitialized so that
1047  multiple parsers can coexist. */
1048 int yydebug;
1049 #else /* !YYDEBUG */
1050 # define YYDPRINTF(Args) ((void) 0)
1051 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
1052 # define YY_STACK_PRINT(Bottom, Top)
1053 # define YY_REDUCE_PRINT(Rule)
1054 #endif /* !YYDEBUG */
1055 
1056 
1057 /* YYINITDEPTH -- initial size of the parser's stacks. */
1058 #ifndef YYINITDEPTH
1059 # define YYINITDEPTH 200
1060 #endif
1061 
1062 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1063  if the built-in stack extension method is used).
1064 
1065  Do not make this value too large; the results are undefined if
1066  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1067  evaluated with infinite-precision integer arithmetic. */
1068 
1069 #ifndef YYMAXDEPTH
1070 # define YYMAXDEPTH 10000
1071 #endif
1072 
1073 
1074 
1075 
1076 
1077 
1078 /*-----------------------------------------------.
1079 | Release the memory associated to this symbol. |
1080 `-----------------------------------------------*/
1081 
1082 static void
1083 yydestruct (const char *yymsg,
1084  yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
1085 {
1086  YY_USE (yyvaluep);
1087  if (!yymsg)
1088  yymsg = "Deleting";
1089  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
1090 
1092  YY_USE (yykind);
1094 }
1095 
1096 
1097 /* Lookahead token kind. */
1099 
1100 /* The semantic value of the lookahead symbol. */
1102 /* Number of syntax errors so far. */
1104 
1105 
1106 
1107 
1108 /*----------.
1109 | yyparse. |
1110 `----------*/
1111 
1112 int
1113 yyparse (void)
1114 {
1115  yy_state_fast_t yystate = 0;
1116  /* Number of tokens to shift before error messages enabled. */
1117  int yyerrstatus = 0;
1118 
1119  /* Refer to the stacks through separate pointers, to allow yyoverflow
1120  to reallocate them elsewhere. */
1121 
1122  /* Their size. */
1123  YYPTRDIFF_T yystacksize = YYINITDEPTH;
1124 
1125  /* The state stack: array, bottom, top. */
1126  yy_state_t yyssa[YYINITDEPTH];
1127  yy_state_t *yyss = yyssa;
1128  yy_state_t *yyssp = yyss;
1129 
1130  /* The semantic value stack: array, bottom, top. */
1131  YYSTYPE yyvsa[YYINITDEPTH];
1132  YYSTYPE *yyvs = yyvsa;
1133  YYSTYPE *yyvsp = yyvs;
1134 
1135  int yyn;
1136  /* The return value of yyparse. */
1137  int yyresult;
1138  /* Lookahead symbol kind. */
1140  /* The variables used to return semantic value and location from the
1141  action routines. */
1142  YYSTYPE yyval;
1143 
1144 
1145 
1146 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1147 
1148  /* The number of symbols on the RHS of the reduced rule.
1149  Keep to zero when no symbol should be popped. */
1150  int yylen = 0;
1151 
1152  YYDPRINTF ((stderr, "Starting parse\n"));
1153 
1154  yychar = YYEMPTY; /* Cause a token to be read. */
1155 
1156  goto yysetstate;
1157 
1158 
1159 /*------------------------------------------------------------.
1160 | yynewstate -- push a new state, which is found in yystate. |
1161 `------------------------------------------------------------*/
1162 yynewstate:
1163  /* In all cases, when you get here, the value and location stacks
1164  have just been pushed. So pushing a state here evens the stacks. */
1165  yyssp++;
1166 
1167 
1168 /*--------------------------------------------------------------------.
1169 | yysetstate -- set current state (the top of the stack) to yystate. |
1170 `--------------------------------------------------------------------*/
1171 yysetstate:
1172  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1173  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1175  *yyssp = YY_CAST (yy_state_t, yystate);
1177  YY_STACK_PRINT (yyss, yyssp);
1178 
1179  if (yyss + yystacksize - 1 <= yyssp)
1180 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1181  YYNOMEM;
1182 #else
1183  {
1184  /* Get the current used size of the three stacks, in elements. */
1185  YYPTRDIFF_T yysize = yyssp - yyss + 1;
1186 
1187 # if defined yyoverflow
1188  {
1189  /* Give user a chance to reallocate the stack. Use copies of
1190  these so that the &'s don't force the real ones into
1191  memory. */
1192  yy_state_t *yyss1 = yyss;
1193  YYSTYPE *yyvs1 = yyvs;
1194 
1195  /* Each stack pointer address is followed by the size of the
1196  data in use in that stack, in bytes. This used to be a
1197  conditional around just the two extra args, but that might
1198  be undefined if yyoverflow is a macro. */
1199  yyoverflow (YY_("memory exhausted"),
1200  &yyss1, yysize * YYSIZEOF (*yyssp),
1201  &yyvs1, yysize * YYSIZEOF (*yyvsp),
1202  &yystacksize);
1203  yyss = yyss1;
1204  yyvs = yyvs1;
1205  }
1206 # else /* defined YYSTACK_RELOCATE */
1207  /* Extend the stack our own way. */
1208  if (YYMAXDEPTH <= yystacksize)
1209  YYNOMEM;
1210  yystacksize *= 2;
1211  if (YYMAXDEPTH < yystacksize)
1212  yystacksize = YYMAXDEPTH;
1213 
1214  {
1215  yy_state_t *yyss1 = yyss;
1216  union yyalloc *yyptr =
1217  YY_CAST (union yyalloc *,
1218  YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1219  if (! yyptr)
1220  YYNOMEM;
1221  YYSTACK_RELOCATE (yyss_alloc, yyss);
1222  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1223 # undef YYSTACK_RELOCATE
1224  if (yyss1 != yyssa)
1225  YYSTACK_FREE (yyss1);
1226  }
1227 # endif
1228 
1229  yyssp = yyss + yysize - 1;
1230  yyvsp = yyvs + yysize - 1;
1231 
1233  YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1234  YY_CAST (long, yystacksize)));
1236 
1237  if (yyss + yystacksize - 1 <= yyssp)
1238  YYABORT;
1239  }
1240 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1241 
1242 
1243  if (yystate == YYFINAL)
1244  YYACCEPT;
1245 
1246  goto yybackup;
1247 
1248 
1249 /*-----------.
1250 | yybackup. |
1251 `-----------*/
1252 yybackup:
1253  /* Do appropriate processing given the current state. Read a
1254  lookahead token if we need one and don't already have one. */
1255 
1256  /* First try to decide what to do without reference to lookahead token. */
1257  yyn = yypact[yystate];
1258  if (yypact_value_is_default (yyn))
1259  goto yydefault;
1260 
1261  /* Not known => get a lookahead token if don't already have one. */
1262 
1263  /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1264  if (yychar == YYEMPTY)
1265  {
1266  YYDPRINTF ((stderr, "Reading a token\n"));
1267  yychar = yylex ();
1268  }
1269 
1270  if (yychar <= YYEOF)
1271  {
1272  yychar = YYEOF;
1273  yytoken = YYSYMBOL_YYEOF;
1274  YYDPRINTF ((stderr, "Now at end of input.\n"));
1275  }
1276  else if (yychar == YYerror)
1277  {
1278  /* The scanner already issued an error message, process directly
1279  to error recovery. But do not keep the error token as
1280  lookahead, it is too special and may lead us to an endless
1281  loop in error recovery. */
1282  yychar = YYUNDEF;
1283  yytoken = YYSYMBOL_YYerror;
1284  goto yyerrlab1;
1285  }
1286  else
1287  {
1288  yytoken = YYTRANSLATE (yychar);
1289  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1290  }
1291 
1292  /* If the proper action on seeing token YYTOKEN is to reduce or to
1293  detect an error, take that action. */
1294  yyn += yytoken;
1295  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1296  goto yydefault;
1297  yyn = yytable[yyn];
1298  if (yyn <= 0)
1299  {
1300  if (yytable_value_is_error (yyn))
1301  goto yyerrlab;
1302  yyn = -yyn;
1303  goto yyreduce;
1304  }
1305 
1306  /* Count tokens shifted since error; after three, turn off error
1307  status. */
1308  if (yyerrstatus)
1309  yyerrstatus--;
1310 
1311  /* Shift the lookahead token. */
1312  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1313  yystate = yyn;
1315  *++yyvsp = yylval;
1317 
1318  /* Discard the shifted token. */
1319  yychar = YYEMPTY;
1320  goto yynewstate;
1321 
1322 
1323 /*-----------------------------------------------------------.
1324 | yydefault -- do the default action for the current state. |
1325 `-----------------------------------------------------------*/
1326 yydefault:
1327  yyn = yydefact[yystate];
1328  if (yyn == 0)
1329  goto yyerrlab;
1330  goto yyreduce;
1331 
1332 
1333 /*-----------------------------.
1334 | yyreduce -- do a reduction. |
1335 `-----------------------------*/
1336 yyreduce:
1337  /* yyn is the number of a rule to reduce with. */
1338  yylen = yyr2[yyn];
1339 
1340  /* If YYLEN is nonzero, implement the default value of the action:
1341  '$$ = $1'.
1342 
1343  Otherwise, the following line sets YYVAL to garbage.
1344  This behavior is undocumented and Bison
1345  users should not rely upon it. Assigning to YYVAL
1346  unconditionally makes the parser a bit smaller, and it avoids a
1347  GCC warning that YYVAL may be used uninitialized. */
1348  yyval = yyvsp[1-yylen];
1349 
1350 
1351  YY_REDUCE_PRINT (yyn);
1352  switch (yyn)
1353  {
1354  case 2: /* Read: Nb_of_shared_pointers Contents */
1355 #line 131 "read.y"
1356  {
1357  Read_chunk = (yyvsp[0].chunkp);
1358 
1359  free(shared_table);
1360 
1361  message_assert("stacks are emty",
1362  stack_size(current_chunk)==0 &&
1365 
1369  YYACCEPT;
1370  }
1371 #line 1372 "y.tab.c"
1372  break;
1373 
1374  case 3: /* Nb_of_shared_pointers: Int */
1375 #line 150 "read.y"
1376  {
1377  size_t i;
1378  shared_number = 0;
1379  shared_size = (yyvsp[0].val);
1380  shared_table = (gen_chunk **)alloc((yyvsp[0].val)*sizeof(gen_chunk*));
1381  for (i=0; i<shared_size; i++)
1383 
1384  current_chunk = stack_make(0, 0, 0);
1385  current_chunk_index = stack_make(0, 0, 0);
1386  current_chunk_size = stack_make(0, 0, 0);
1387  }
1388 #line 1389 "y.tab.c"
1389  break;
1390 
1391  case 4: /* Contents: Chunk */
1392 #line 165 "read.y"
1393  {
1394  (yyval.chunkp) = (yyvsp[0].chunkp);
1395  }
1396 #line 1397 "y.tab.c"
1397  break;
1398 
1399  case 5: /* Contents: TABULATED_BEGIN Type Datas2 RP */
1400 #line 169 "read.y"
1401  {
1402  (yyval.chunkp) = (gen_chunk*) alloc(sizeof(gen_chunk));
1403  (yyval.chunkp)->i = (yyvsp[-2].val);
1404  }
1405 #line 1406 "y.tab.c"
1406  break;
1407 
1408  case 6: /* $@1: %empty */
1409 #line 177 "read.y"
1410  {
1411  gen_chunk * x = chunk_for_domain((yyvsp[0].val));
1412  stack_push((void*)(Domains[(yyvsp[0].val)].size), current_chunk_size);
1413 
1414  if ((yyvsp[-2].val))
1415  {
1416  shared_table[(yyvsp[-2].val)-1] = x;
1418  }
1419  else
1420  {
1422  }
1423  x->i = (yyvsp[0].val);
1424  if (Domains[(yyvsp[0].val)].tabulated)
1425  {
1426  (x+1)->i = 0; /* tabulated number */
1427  stack_push((void*)2, current_chunk_index);
1428  }
1429  else
1430  {
1431  stack_push((void*)1, current_chunk_index);
1432  }
1433  }
1434 #line 1435 "y.tab.c"
1435  break;
1436 
1437  case 7: /* Chunk: Shared_chunk CHUNK_BEGIN Type $@1 Datas3 RP */
1438 #line 202 "read.y"
1439  {
1440  (yyval.chunkp) = stack_pop(current_chunk);
1441  void *ci = stack_pop(current_chunk_index),
1443  message_assert("all data copied", ci == cs );
1444  }
1445 #line 1446 "y.tab.c"
1446  break;
1447 
1448  case 8: /* Shared_chunk: LB Int */
1449 #line 211 "read.y"
1450  { (yyval.val) = (yyvsp[0].val); }
1451 #line 1452 "y.tab.c"
1452  break;
1453 
1454  case 9: /* Shared_chunk: %empty */
1455 #line 212 "read.y"
1456  { (yyval.val) = 0; }
1457 #line 1458 "y.tab.c"
1458  break;
1459 
1460  case 10: /* Type: Int */
1461 #line 216 "read.y"
1462  {
1463  (yyval.val) = gen_type_translation_old_to_actual((yyvsp[0].val));
1464  }
1465 #line 1466 "y.tab.c"
1466  break;
1467 
1468  case 11: /* Datas: Datas Data */
1469 #line 223 "read.y"
1470  { (yyval.consp) = CONS( CHUNK, (yyvsp[0].chunk).p, (yyvsp[-1].consp) ); }
1471 #line 1472 "y.tab.c"
1472  break;
1473 
1474  case 12: /* Datas: %empty */
1475 #line 224 "read.y"
1476  { (yyval.consp) = NIL; }
1477 #line 1478 "y.tab.c"
1478  break;
1479 
1480  case 13: /* Datas2: Datas2 Data */
1481 #line 229 "read.y"
1482  { }
1483 #line 1484 "y.tab.c"
1484  break;
1485 
1486  case 14: /* Datas2: %empty */
1487 #line 230 "read.y"
1488  { }
1489 #line 1490 "y.tab.c"
1490  break;
1491 
1492  case 15: /* Datas3: Datas3 Data */
1493 #line 235 "read.y"
1494  {
1495  size_t i = (size_t) stack_pop(current_chunk_index);
1496  size_t size = (size_t) stack_head(current_chunk_size);
1498  if (i >= size) {
1499  char * s;
1500  int n = asprintf(
1501  &s, "wrong index: %d not in [0,%d)", (int) i, (int) size);
1502  message_assert("asprintf ok", n >= 0);
1503  yyerror(s);
1504  }
1505  *(current+i) = (yyvsp[0].chunk);
1506  stack_push((void *)(i+1), current_chunk_index);
1507  }
1508 #line 1509 "y.tab.c"
1509  break;
1510 
1511  case 16: /* Datas3: %empty */
1512 #line 249 "read.y"
1513  { }
1514 #line 1515 "y.tab.c"
1515  break;
1516 
1517  case 17: /* Sparse_Datas: Sparse_Datas Int Data */
1518 #line 252 "read.y"
1519  { /* index, value */
1520  (yyval.consp) = CONS(CONSP, CONS(INT, (yyvsp[-1].val), CONS(CHUNK, (yyvsp[0].chunk).p, NIL)), (yyvsp[-2].consp));
1521  }
1522 #line 1523 "y.tab.c"
1523  break;
1524 
1525  case 18: /* Sparse_Datas: %empty */
1526 #line 255 "read.y"
1527  { (yyval.consp) = NIL; }
1528 #line 1529 "y.tab.c"
1529  break;
1530 
1531  case 19: /* Data: Basis */
1532 #line 258 "read.y"
1533  { (yyval.chunk) = (yyvsp[0].chunk); }
1534 #line 1535 "y.tab.c"
1535  break;
1536 
1537  case 20: /* Data: READ_LIST_UNDEFINED */
1538 #line 259 "read.y"
1539  { (yyval.chunk).l = list_undefined; }
1540 #line 1541 "y.tab.c"
1541  break;
1542 
1543  case 21: /* Data: LP Datas RP */
1544 #line 260 "read.y"
1545  { (yyval.chunk).l = gen_nreverse((yyvsp[-1].consp)); }
1546 #line 1547 "y.tab.c"
1547  break;
1548 
1549  case 22: /* Data: READ_SET_UNDEFINED */
1550 #line 261 "read.y"
1551  { (yyval.chunk).t = set_undefined; }
1552 #line 1553 "y.tab.c"
1553  break;
1554 
1555  case 23: /* Data: LC Int Datas RC */
1556 #line 263 "read.y"
1557  {
1558  (yyval.chunk).t = set_make( (yyvsp[-2].val) ) ;
1559  MAPL( cp, {
1560  switch( (yyvsp[-2].val) ) {
1561  case set_int:
1562  set_add_element( (yyval.chunk).t, (yyval.chunk).t, (char *)cp->car.i ) ;
1563  break ;
1564  default:
1565  set_add_element( (yyval.chunk).t, (yyval.chunk).t, cp->car.s ) ;
1566  break ;
1567  }}, (yyvsp[-1].consp) ) ;
1568  gen_free_list( (yyvsp[-1].consp) ) ;
1569  }
1570 #line 1571 "y.tab.c"
1571  break;
1572 
1573  case 24: /* Data: READ_ARRAY_UNDEFINED */
1574 #line 276 "read.y"
1575  { (yyval.chunk).p = array_undefined ; }
1576 #line 1577 "y.tab.c"
1577  break;
1578 
1579  case 25: /* Data: VECTOR_BEGIN Int Sparse_Datas RP */
1580 #line 278 "read.y"
1581  {
1582  gen_chunk *kp ;
1583  cons *cp ;
1584  int i ;
1585 
1586  kp = (gen_chunk *)alloc( (yyvsp[-2].val)*sizeof( gen_chunk )) ;
1587 
1588  for( i=0 ; i != (yyvsp[-2].val) ; i++ ) {
1589  kp[ i ].p = gen_chunk_undefined ;
1590  }
1591  for( cp=(yyvsp[-1].consp) ; cp!=NULL ; cp=cp->cdr ) {
1592  cons *pair = CONSP( CAR( cp )) ;
1593  int index = INT(CAR(pair));
1594  gen_chunk val = CAR(CDR(pair));
1595  assert(index>=0 && index<(yyvsp[-2].val));
1596  kp[index] = val;
1597 
1598  gen_free_list(pair); /* free */
1599  }
1600 
1601  gen_free_list((yyvsp[-1].consp));
1602  (yyval.chunk).p = kp ;
1603  }
1604 #line 1605 "y.tab.c"
1605  break;
1606 
1607  case 26: /* Data: ARROW_BEGIN Datas RP */
1608 #line 301 "read.y"
1609  {
1611  cons *cp ;
1612 
1613  for( cp = gen_nreverse((yyvsp[-1].consp)) ; cp != NULL ; cp=cp->cdr->cdr ) {
1614  gen_chunk *k = (gen_chunk *)alloc(sizeof(gen_chunk));
1615  gen_chunk *v = (gen_chunk *)alloc(sizeof(gen_chunk));
1616 
1617  *k = CAR( cp ) ;
1618  *v = CAR( CDR( cp )) ;
1619  hash_put( h, (char *)k, (char *)v ) ;
1620  }
1621  gen_free_list( (yyvsp[-1].consp) ) ;
1622  (yyval.chunk).h = h ;
1623  }
1624 #line 1625 "y.tab.c"
1625  break;
1626 
1627  case 27: /* Data: Chunk */
1628 #line 316 "read.y"
1629  { (yyval.chunk).p = (yyvsp[0].chunkp) ; }
1630 #line 1631 "y.tab.c"
1631  break;
1632 
1633  case 28: /* Data: SHARED_POINTER Int */
1634 #line 318 "read.y"
1635  {
1636  message_assert("shared is defined",
1637  shared_table[(yyvsp[0].val)-1]!=gen_chunk_undefined);
1638  (yyval.chunk).p = shared_table[(yyvsp[0].val)-1];
1639  }
1640 #line 1641 "y.tab.c"
1641  break;
1642 
1643  case 29: /* Basis: READ_UNIT */
1644 #line 325 "read.y"
1645  { (yyval.chunk).u = 1; }
1646 #line 1647 "y.tab.c"
1647  break;
1648 
1649  case 30: /* Basis: READ_BOOL Int */
1650 #line 326 "read.y"
1651  { (yyval.chunk).b = (yyvsp[0].val); }
1652 #line 1653 "y.tab.c"
1653  break;
1654 
1655  case 31: /* Basis: READ_CHAR */
1656 #line 327 "read.y"
1657  { (yyval.chunk).c = (yyvsp[0].c); }
1658 #line 1659 "y.tab.c"
1659  break;
1660 
1661  case 32: /* Basis: Int */
1662 #line 328 "read.y"
1663  { (yyval.chunk).i = (yyvsp[0].val); }
1664 #line 1665 "y.tab.c"
1665  break;
1666 
1667  case 33: /* Basis: READ_FLOAT */
1668 #line 329 "read.y"
1669  { (yyval.chunk).f = (yyvsp[0].d); }
1670 #line 1671 "y.tab.c"
1671  break;
1672 
1673  case 34: /* Basis: String */
1674 #line 330 "read.y"
1675  { (yyval.chunk) = *(yyvsp[0].chunkp) ; }
1676 #line 1677 "y.tab.c"
1677  break;
1678 
1679  case 35: /* Basis: READ_EXTERNAL Int */
1680 #line 331 "read.y"
1681  { (yyval.chunk).s = (char*) read_external((yyvsp[0].val)); }
1682 #line 1683 "y.tab.c"
1683  break;
1684 
1685  case 36: /* Basis: READ_DEF Chunk */
1686 #line 332 "read.y"
1687  { (yyval.chunk).p = make_def((yyvsp[0].chunkp)); }
1688 #line 1689 "y.tab.c"
1689  break;
1690 
1691  case 37: /* Basis: READ_REF Type String */
1692 #line 333 "read.y"
1693  { (yyval.chunk).p = make_ref((yyvsp[-1].val), (yyvsp[0].chunkp)); }
1694 #line 1695 "y.tab.c"
1695  break;
1696 
1697  case 38: /* Basis: READ_NULL */
1698 #line 334 "read.y"
1699  { (yyval.chunk).p = gen_chunk_undefined ; }
1700 #line 1701 "y.tab.c"
1701  break;
1702 
1703  case 39: /* Int: READ_INT */
1704 #line 337 "read.y"
1705  { (yyval.val) = (yyvsp[0].val); }
1706 #line 1707 "y.tab.c"
1707  break;
1708 
1709  case 40: /* String: READ_STRING */
1710 #line 340 "read.y"
1711  {
1712  gen_chunk *obj = (gen_chunk *)alloc(sizeof(gen_chunk));
1713  obj->s = (yyvsp[0].s);
1714  (yyval.chunkp) = obj;
1715  }
1716 #line 1717 "y.tab.c"
1717  break;
1718 
1719 
1720 #line 1721 "y.tab.c"
1721 
1722  default: break;
1723  }
1724  /* User semantic actions sometimes alter yychar, and that requires
1725  that yytoken be updated with the new translation. We take the
1726  approach of translating immediately before every use of yytoken.
1727  One alternative is translating here after every semantic action,
1728  but that translation would be missed if the semantic action invokes
1729  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1730  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
1731  incorrect destructor might then be invoked immediately. In the
1732  case of YYERROR or YYBACKUP, subsequent parser actions might lead
1733  to an incorrect destructor call or verbose syntax error message
1734  before the lookahead is translated. */
1735  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1736 
1737  YYPOPSTACK (yylen);
1738  yylen = 0;
1739 
1740  *++yyvsp = yyval;
1741 
1742  /* Now 'shift' the result of the reduction. Determine what state
1743  that goes to, based on the state we popped back to and the rule
1744  number reduced by. */
1745  {
1746  const int yylhs = yyr1[yyn] - YYNTOKENS;
1747  const int yyi = yypgoto[yylhs] + *yyssp;
1748  yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1749  ? yytable[yyi]
1750  : yydefgoto[yylhs]);
1751  }
1752 
1753  goto yynewstate;
1754 
1755 
1756 /*--------------------------------------.
1757 | yyerrlab -- here on detecting error. |
1758 `--------------------------------------*/
1759 yyerrlab:
1760  /* Make sure we have latest lookahead translation. See comments at
1761  user semantic actions for why this is necessary. */
1762  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1763  /* If not already recovering from an error, report this error. */
1764  if (!yyerrstatus)
1765  {
1766  ++yynerrs;
1767  yyerror (YY_("syntax error"));
1768  }
1769 
1770  if (yyerrstatus == 3)
1771  {
1772  /* If just tried and failed to reuse lookahead token after an
1773  error, discard it. */
1774 
1775  if (yychar <= YYEOF)
1776  {
1777  /* Return failure if at end of input. */
1778  if (yychar == YYEOF)
1779  YYABORT;
1780  }
1781  else
1782  {
1783  yydestruct ("Error: discarding",
1784  yytoken, &yylval);
1785  yychar = YYEMPTY;
1786  }
1787  }
1788 
1789  /* Else will try to reuse lookahead token after shifting the error
1790  token. */
1791  goto yyerrlab1;
1792 
1793 
1794 /*---------------------------------------------------.
1795 | yyerrorlab -- error raised explicitly by YYERROR. |
1796 `---------------------------------------------------*/
1797 yyerrorlab:
1798  /* Pacify compilers when the user code never invokes YYERROR and the
1799  label yyerrorlab therefore never appears in user code. */
1800  if (0)
1801  YYERROR;
1802  ++yynerrs;
1803 
1804  /* Do not reclaim the symbols of the rule whose action triggered
1805  this YYERROR. */
1806  YYPOPSTACK (yylen);
1807  yylen = 0;
1808  YY_STACK_PRINT (yyss, yyssp);
1809  yystate = *yyssp;
1810  goto yyerrlab1;
1811 
1812 
1813 /*-------------------------------------------------------------.
1814 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1815 `-------------------------------------------------------------*/
1816 yyerrlab1:
1817  yyerrstatus = 3; /* Each real token shifted decrements this. */
1818 
1819  /* Pop stack until we find a state that shifts the error token. */
1820  for (;;)
1821  {
1822  yyn = yypact[yystate];
1823  if (!yypact_value_is_default (yyn))
1824  {
1825  yyn += YYSYMBOL_YYerror;
1826  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1827  {
1828  yyn = yytable[yyn];
1829  if (0 < yyn)
1830  break;
1831  }
1832  }
1833 
1834  /* Pop the current state because it cannot handle the error token. */
1835  if (yyssp == yyss)
1836  YYABORT;
1837 
1838 
1839  yydestruct ("Error: popping",
1840  YY_ACCESSING_SYMBOL (yystate), yyvsp);
1841  YYPOPSTACK (1);
1842  yystate = *yyssp;
1843  YY_STACK_PRINT (yyss, yyssp);
1844  }
1845 
1847  *++yyvsp = yylval;
1849 
1850 
1851  /* Shift the error token. */
1852  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
1853 
1854  yystate = yyn;
1855  goto yynewstate;
1856 
1857 
1858 /*-------------------------------------.
1859 | yyacceptlab -- YYACCEPT comes here. |
1860 `-------------------------------------*/
1861 yyacceptlab:
1862  yyresult = 0;
1863  goto yyreturnlab;
1864 
1865 
1866 /*-----------------------------------.
1867 | yyabortlab -- YYABORT comes here. |
1868 `-----------------------------------*/
1869 yyabortlab:
1870  yyresult = 1;
1871  goto yyreturnlab;
1872 
1873 
1874 /*-----------------------------------------------------------.
1875 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
1876 `-----------------------------------------------------------*/
1877 yyexhaustedlab:
1878  yyerror (YY_("memory exhausted"));
1879  yyresult = 2;
1880  goto yyreturnlab;
1881 
1882 
1883 /*----------------------------------------------------------.
1884 | yyreturnlab -- parsing is finished, clean up and return. |
1885 `----------------------------------------------------------*/
1886 yyreturnlab:
1887  if (yychar != YYEMPTY)
1888  {
1889  /* Make sure we have latest lookahead translation. See comments at
1890  user semantic actions for why this is necessary. */
1891  yytoken = YYTRANSLATE (yychar);
1892  yydestruct ("Cleanup: discarding lookahead",
1893  yytoken, &yylval);
1894  }
1895  /* Do not reclaim the symbols of the rule whose action triggered
1896  this YYABORT or YYACCEPT. */
1897  YYPOPSTACK (yylen);
1898  YY_STACK_PRINT (yyss, yyssp);
1899  while (yyssp != yyss)
1900  {
1901  yydestruct ("Cleanup: popping",
1902  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
1903  YYPOPSTACK (1);
1904  }
1905 #ifndef yyoverflow
1906  if (yyss != yyssa)
1907  YYSTACK_FREE (yyss);
1908 #endif
1909 
1910  return yyresult;
1911 }
1912 
1913 #line 346 "read.y"
1914 
1915 
1917 {
1918  gen_chunk * cp;
1920  cp = (gen_chunk*) alloc(sizeof(gen_chunk)*Domains[domain].size);
1921  cp->i = domain;
1922  return cp;
1923 }
1924 
1925 /* YYERROR manages a syntax error while reading an object. */
1926 
1927 void yyerror(const char * s)
1928 {
1929  int c, n=40;
1930  newgen_lexer_position(stderr);
1931  fprintf(stderr, "%s before ", s);
1932 
1933  while (n-->0 && ((c=genread_input()) != EOF))
1934  putc(c, stderr);
1935 
1936  fprintf(stderr, "\n\n");
1937 
1938  fatal("Incorrect object written by GEN_WRITE\n", (char *) NULL);
1939 }
1940 
1941 /* READ_EXTERNAL reads external types on stdin */
1942 
1943 static void * read_external(int which)
1944 {
1945  struct gen_binding *bp;
1946  union domain *dp;
1947  extern int genread_input();
1948 
1949  which = gen_type_translation_old_to_actual(which);
1950  message_assert("consistent domain number", which>=0 && which<MAX_DOMAIN);
1951 
1952  bp = &Domains[ which ] ;
1953  dp = bp->domain ;
1954 
1955  if( dp->ba.type != EXTERNAL_DT ) {
1956  fatal( "gen_read: undefined external %s\n", bp->name ) ;
1957  /*NOTREACHED*/
1958  }
1959  if( dp->ex.read == NULL ) {
1960  user( "gen_read: uninitialized external %s\n", bp->name ) ;
1961  return( NULL ) ;
1962  }
1963  if( genread_input() != ' ' ) {
1964  fatal( "read_external: white space expected\n", (char *)NULL ) ;
1965  /*NOTREACHED*/
1966  }
1967  /*
1968  Attention, ce qui suit est absolument horrible. Les fonctions
1969  suceptibles d'etre appelees a cet endroit sont:
1970  - soit des fonctions 'user-written' pour les domaines externes
1971  non geres par NewGen
1972  - soit la fonctions gen_read pour les domaines externes geres
1973  par NewGen
1974 
1975  Dans le 1er cas, il faut passer la fonction de lecture d'un caractere
1976  (yyinput) a la fonction de lecture du domaine externe (on ne peut pas
1977  passer le pointeur de fichier car lex bufferise les caracteres en
1978  entree). Dans le second cas, il faut passer le pointeur de fichier a
1979  cause de yacc/lex.
1980 
1981  Je decide donc de passer les deux parametres: pointeur de fichier et
1982  pointeur de fonction de lecture. Dans chaque cas, l'un ou l'autre sera
1983  ignore.
1984  */
1985  return (*(dp->ex.read))(genread_in, genread_input);
1986 }
1987 
1988 /* MAKE_DEF defines the object CHUNK of name STRING to be in the tabulation
1989  table INT. domain translation is handled before in Chunk.
1990  */
1992 {
1993  int domain = gc->i;
1994  string id = (gc+2)->s;
1996 }
1997 
1998 /* MAKE_REF references the object of hash name STRING in the tabulation table
1999  INT. Forward references are dealt with here.
2000  */
2001 static gen_chunk * make_ref(int domain, gen_chunk * st)
2002 {
2004 
2006  {
2008  {
2009  cp = (gen_chunk*) alloc(sizeof(gen_chunk)*Domains[domain].size);
2010  cp->i = domain;
2011  (cp+1)->i = 0; /* no number yet */
2012  (cp+2)->s = st->s; /* TAKEN! */
2013  cp = gen_do_enter_tabulated(domain, st->s, cp, true);
2014  }
2015  else
2016  {
2017  user("make_ref: forward references to %s prohibited\n", st->s) ;
2018  }
2019  }
2020  else
2021  {
2022  free(st->s);
2023  }
2024 
2025  free(st);
2026  return cp;
2027 }
@ INT
Definition: atomic.c:48
char * alloc(int size)
ALLOC is an "iron-clad" version of malloc(3).
Definition: build.c:501
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
#define gen_chunk_undefined_p(c)
Definition: genC.h:75
union gen_chunk gen_chunk
A gen_chunk is used to store every object.
#define CHUNK(x)
Definition: genC.h:90
#define CONSP(x)
Definition: genC.h:88
#define gen_chunk_undefined
Definition: genC.h:74
int gen_type_translation_old_to_actual(int n)
forwards conversion
Definition: genClib.c:2147
yytokentype
Definition: genread.h:52
#define RP
Definition: genread_yacc.c:244
@ YYENOMEM
Definition: genread_yacc.c:895
#define READ_FLOAT
Definition: genread_yacc.c:260
#define CHUNK_BEGIN
Definition: genread_yacc.c:238
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Definition: genread_yacc.c:513
#define YYMAXDEPTH
This constant should be adapted to the particular need of the application.
Definition: genread_yacc.c:126
#define YYSTACK_FREE
Definition: genread_yacc.c:575
static stack current_chunk_index
Definition: genread_yacc.c:159
static const yytype_int8 yytranslate[]
YYTRANSLATE[TOKEN-NUM] – Symbol number corresponding to TOKEN-NUM as returned by yylex.
Definition: genread_yacc.c:689
yysymbol_kind_t
!YY_GENREAD_Y_TAB_H_INCLUDED
Definition: genread_yacc.c:294
@ YYSYMBOL_READ_DEF
READ_EXTERNAL
Definition: genread_yacc.c:311
@ YYSYMBOL_ARROW_BEGIN
VECTOR_BEGIN
Definition: genread_yacc.c:301
@ YYSYMBOL_YYUNDEF
error
Definition: genread_yacc.c:298
@ YYSYMBOL_CHUNK_BEGIN
"invalid token"
Definition: genread_yacc.c:299
@ YYSYMBOL_Sparse_Datas
Datas3
Definition: genread_yacc.c:333
@ YYSYMBOL_READ_EXTERNAL
SHARED_POINTER
Definition: genread_yacc.c:310
@ YYSYMBOL_YYerror
"end of file"
Definition: genread_yacc.c:297
@ YYSYMBOL_READ_BOOL
ARROW_BEGIN
Definition: genread_yacc.c:302
@ YYSYMBOL_Nb_of_shared_pointers
Read
Definition: genread_yacc.c:324
@ YYSYMBOL_READ_CHAR
READ_UNIT
Definition: genread_yacc.c:319
@ YYSYMBOL_Data
Sparse_Datas
Definition: genread_yacc.c:334
@ YYSYMBOL_READ_REF
READ_DEF
Definition: genread_yacc.c:312
@ YYSYMBOL_Datas
Type
Definition: genread_yacc.c:330
@ YYSYMBOL_READ_ARRAY_UNDEFINED
READ_SET_UNDEFINED
Definition: genread_yacc.c:316
@ YYSYMBOL_READ_LIST_UNDEFINED
READ_NULL
Definition: genread_yacc.c:314
@ YYSYMBOL_Contents
Nb_of_shared_pointers
Definition: genread_yacc.c:325
@ YYSYMBOL_READ_NULL
READ_REF
Definition: genread_yacc.c:313
@ YYSYMBOL_Read
$accept
Definition: genread_yacc.c:323
@ YYSYMBOL_READ_INT
READ_CHAR
Definition: genread_yacc.c:320
@ YYSYMBOL_READ_STRING
READ_ARRAY_UNDEFINED
Definition: genread_yacc.c:317
@ YYSYMBOL_RP
LP
Definition: genread_yacc.c:305
@ YYSYMBOL_READ_FLOAT
READ_INT
Definition: genread_yacc.c:321
@ YYSYMBOL_READ_SET_UNDEFINED
READ_LIST_UNDEFINED
Definition: genread_yacc.c:315
@ YYSYMBOL_TABULATED_BEGIN
READ_BOOL
Definition: genread_yacc.c:303
@ YYSYMBOL_Int
Basis
Definition: genread_yacc.c:336
@ YYSYMBOL_Basis
Data
Definition: genread_yacc.c:335
@ YYSYMBOL_Chunk
Contents
Definition: genread_yacc.c:326
@ YYSYMBOL_READ_UNIT
READ_STRING
Definition: genread_yacc.c:318
@ YYSYMBOL_LP
TABULATED_BEGIN
Definition: genread_yacc.c:304
@ YYSYMBOL_YYACCEPT
READ_FLOAT
Definition: genread_yacc.c:322
@ YYSYMBOL_LB
RC
Definition: genread_yacc.c:308
@ YYSYMBOL_31_1
Chunk
Definition: genread_yacc.c:327
@ YYSYMBOL_String
Int
Definition: genread_yacc.c:337
@ YYSYMBOL_YYEOF
Definition: genread_yacc.c:296
@ YYSYMBOL_Type
Shared_chunk
Definition: genread_yacc.c:329
@ YYSYMBOL_Datas3
Datas2
Definition: genread_yacc.c:332
@ YYSYMBOL_Datas2
Datas
Definition: genread_yacc.c:331
@ YYSYMBOL_LC
RP
Definition: genread_yacc.c:306
@ YYSYMBOL_YYEMPTY
Definition: genread_yacc.c:295
@ YYSYMBOL_SHARED_POINTER
LB
Definition: genread_yacc.c:309
@ YYSYMBOL_Shared_chunk
$@1
Definition: genread_yacc.c:328
@ YYSYMBOL_RC
LC
Definition: genread_yacc.c:307
@ YYSYMBOL_VECTOR_BEGIN
CHUNK_BEGIN
Definition: genread_yacc.c:300
#define VECTOR_BEGIN
Definition: genread_yacc.c:239
#define READ_ARRAY_UNDEFINED
Definition: genread_yacc.c:255
#define YY_ASSERT(E)
Definition: genread_yacc.c:533
static stack current_chunk
Definition: genread_yacc.c:158
#define YY_(Msgid)
Definition: genread_yacc.c:467
static stack current_chunk_size
Definition: genread_yacc.c:160
#define YYNOMEM
Definition: genread_yacc.c:903
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
Definition: genread_yacc.c:514
static const yytype_int8 yydefact[]
YYDEFACT[STATE-NUM] – Default reduction number in state STATE-NUM.
Definition: genread_yacc.c:789
#define YYNSTATES
YYNSTATES – Number of states.
Definition: genread_yacc.c:674
#define YY_IGNORE_USELESS_CAST_END
Definition: genread_yacc.c:529
short yytype_int16
Definition: genread_yacc.c:378
#define yychar
Definition: genread_yacc.c:74
#define YYEOF
Definition: genread_yacc.c:235
#define YYABORT
Definition: genread_yacc.c:901
#define YYSTACK_BYTES(N)
The size of an array large to enough to hold all stacks, each with N elements.
Definition: genread_yacc.c:618
static const yytype_int8 yycheck[]
Definition: genread_yacc.c:839
static size_t shared_number
The SHARED_TABLE maps a shared pointer number to its gen_chunk pointer value.
Definition: genread_yacc.c:140
int genread_parse(void)
#define YY_REDUCE_PRINT(Rule)
FILE * genread_in
#define YY_CAST(Type, Val)
Definition: genread_yacc.c:170
YYSTYPE genread_lval
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...
#define READ_SET_UNDEFINED
Definition: genread_yacc.c:254
static const yytype_int16 yypact[]
YYPACT[STATE-NUM] – Index in YYTABLE of the portion describing STATE-NUM.
Definition: genread_yacc.c:775
#define yylex
Definition: genread_yacc.c:69
#define YYerror
Definition: genread_yacc.c:236
#define YY_NULLPTR
Definition: genread_yacc.c:182
#define LP
Definition: genread_yacc.c:243
#define YYUNDEF
Definition: genread_yacc.c:237
void * malloc(YYSIZE_T)
#define YYFINAL
!YYCOPY_NEEDED
Definition: genread_yacc.c:663
#define SHARED_POINTER
Definition: genread_yacc.c:248
static void * read_external(int)
READ_EXTERNAL reads external types on stdin.
#define READ_NULL
Definition: genread_yacc.c:252
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
Definition: genread_yacc.c:735
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
#define READ_DEF
Definition: genread_yacc.c:250
#define READ_CHAR
Definition: genread_yacc.c:258
#define yylval
Definition: genread_yacc.c:73
#define YYNTOKENS
YYNTOKENS – Number of terminals.
Definition: genread_yacc.c:668
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
#define YY_STACK_PRINT(Bottom, Top)
static gen_chunk * make_def(gen_chunk *)
MAKE_DEF defines the object CHUNK of name STRING to be in the tabulation table INT.
#define READ_LIST_UNDEFINED
Definition: genread_yacc.c:253
#define YYSIZE_T
Definition: genread_yacc.c:440
#define yydebug
Definition: genread_yacc.c:71
#define YY_IGNORE_USELESS_CAST_BEGIN
Definition: genread_yacc.c:528
#define yyparse
------—.
Definition: genread_yacc.c:68
static const yytype_int8 yyr2[]
YYR2[RULE-NUM] – Number of symbols on the right-hand side of rule RULE-NUM.
Definition: genread_yacc.c:885
static const yytype_int8 yytable[]
YYTABLE[YYPACT[STATE-NUM]] – What to do in state STATE-NUM.
Definition: genread_yacc.c:817
#define YYPTRDIFF_T
Definition: genread_yacc.c:426
#define READ_REF
Definition: genread_yacc.c:251
#define yynerrs
Definition: genread_yacc.c:72
#define RC
Definition: genread_yacc.c:246
#define LC
Definition: genread_yacc.c:245
#define YYACCEPT
Definition: genread_yacc.c:900
#define yytable_value_is_error(Yyn)
Definition: genread_yacc.c:770
static gen_chunk * chunk_for_domain(int)
#define READ_INT
Definition: genread_yacc.c:259
#define TABULATED_BEGIN
Definition: genread_yacc.c:242
#define YYTRANSLATE(YYX)
YYTRANSLATE(TOKEN-NUM) – Symbol number corresponding to TOKEN-NUM as returned by yylex,...
Definition: genread_yacc.c:682
static const yytype_int8 yystos[]
YYSTOS[STATE-NUM] – The symbol kind of the accessing symbol of state STATE-NUM.
Definition: genread_yacc.c:863
int genread_input(void)
#define YY_ATTRIBUTE_UNUSED
Definition: genread_yacc.c:484
#define READ_STRING
Definition: genread_yacc.c:256
static gen_chunk * make_ref(int, gen_chunk *)
MAKE_REF references the object of hash name STRING in the tabulation table INT.
static const yytype_int8 yypgoto[]
YYPGOTO[NTERM-NUM].
Definition: genread_yacc.c:801
int warn_on_ref_without_def_in_read_tabulated
User selectable options.
Definition: genread_yacc.c:130
#define READ_BOOL
Definition: genread_yacc.c:241
static const yytype_int8 yyr1[]
YYR1[RULE-NUM] – Symbol kind of the left-hand side of rule RULE-NUM.
Definition: genread_yacc.c:875
#define LB
Definition: genread_yacc.c:247
enum yytokentype yytoken_kind_t
Definition: genread_yacc.c:231
#define YYPOPSTACK(N)
int yy_state_fast_t
State numbers in computations.
Definition: genread_yacc.c:457
int newgen_allow_forward_ref
The GEN_TABULATED_NAMES hash table maps ids to index in the table of the tabulated domains.
Definition: genread_yacc.c:151
static gen_chunk ** shared_table
Definition: genread_yacc.c:142
unsigned short yytype_uint16
Definition: genread_yacc.c:410
static const yytype_int8 yydefgoto[]
YYDEFGOTO[NTERM-NUM].
Definition: genread_yacc.c:808
#define YYEMPTY
Token kinds.
Definition: genread_yacc.c:234
#define YYLAST
YYLAST – Last index in YYTABLE.
Definition: genread_yacc.c:665
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
Relocate STACK from its old location to the new one.
Definition: genread_yacc.c:629
#define yypact_value_is_default(Yyn)
Definition: genread_yacc.c:765
#define YYINITDEPTH
!YYDEBUG
void newgen_lexer_position(FILE *)
First part of user prologue.
Definition: genread_lex.c:831
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
static size_t shared_size
Definition: genread_yacc.c:141
void free(void *)
#define ARROW_BEGIN
Definition: genread_yacc.c:240
#define YYERROR
Definition: genread_yacc.c:902
#define READ_UNIT
Definition: genread_yacc.c:257
#define YYSIZEOF(X)
Definition: genread_yacc.c:450
#define YYSTACK_ALLOC
The parser invokes alloca or malloc; define the necessary symbols.
Definition: genread_yacc.c:574
gen_chunk * Read_chunk
Where the root will be.
Definition: genread_yacc.c:134
yytype_int8 yy_state_t
Stored state numbers (used for stacks).
Definition: genread_yacc.c:454
#define YYDPRINTF(Args)
Enable debugging if requested.
#define YY_USE(E)
Suppress unused-variable warnings by "using" E.
Definition: genread_yacc.c:490
#define yyerror
Definition: genread_yacc.c:70
#define READ_EXTERNAL
Definition: genread_yacc.c:249
struct gen_binding Domains[MAX_DOMAIN]
in build.c
Definition: genspec_yacc.c:114
list gen_nreverse(list cp)
reverse a list in place
Definition: list.c:304
#define NIL
The empty list (nil in Lisp)
Definition: newgen_list.h:47
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
Definition: newgen_list.h:150
#define CAR(pcons)
Get the value of the first element of a list.
Definition: newgen_list.h:92
void gen_free_list(list l)
free the spine of the list
Definition: list.c:327
#define CDR(pcons)
Get the list less its first element.
Definition: newgen_list.h:111
#define MAPL(_map_list_cp, _code, _l)
Apply some code on the addresses of all the elements of a list.
Definition: newgen_list.h:203
#define list_undefined
Undefined list definition :-)
Definition: newgen_list.h:69
hash_table hash_table_make(hash_key_type key_type, size_t size)
Definition: hash.c:294
void hash_put(hash_table htp, const void *key, const void *val)
This functions stores a couple (key,val) in the hash table pointed to by htp.
Definition: hash.c:364
#define asprintf
Definition: misc-local.h:225
#define assert(ex)
Definition: newgen_assert.h:41
#define message_assert(msg, ex)
Definition: newgen_assert.h:47
@ hash_chunk
Definition: newgen_hash.h:32
#define check_domain(dom)
gen_chunk * gen_do_enter_tabulated(int, char *, gen_chunk *, bool)
Definition: tabulated.c:265
@ EXTERNAL_DT
#define MAX_DOMAIN
MAX_DOMAIN is the maximum number of entries in the DOMAINS table.
void fatal(char *,...)
void user(char *,...)
External routines.
gen_chunk * gen_enter_tabulated(int, char *, gen_chunk *, bool)
ENTER_TABULATED_DEF enters a new definition (previous refs are allowed if ALLOW_REF) in the INDEX tab...
Definition: tabulated.c:279
void * gen_find_tabulated(const char *, int)
Definition: tabulated.c:218
#define set_undefined
Definition: newgen_set.h:48
@ set_int
Definition: newgen_set.h:43
set set_make(set_type)
Create an empty set of any type but hash_private.
Definition: set.c:102
set set_add_element(set, const set, const void *)
Definition: set.c:152
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 array_undefined
ARRAY.
Definition: newgen_types.h:103
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
Definition: offsets.c:15
size_t size_t
Definition: properties.c:413
Pvecteur cp
pointeur sur l'egalite ou l'inegalite courante
Definition: sc_read.c:87
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
static char * x
Definition: split_file.c:159
#define uint_least8_t
Definition: stdint.in.h:229
#define int_least16_t
Definition: stdint.in.h:230
#define intptr_t
Definition: stdint.in.h:294
#define int_least8_t
7.18.1.2.
Definition: stdint.in.h:228
#define uint_least16_t
Definition: stdint.in.h:231
static size_t current
Definition: string.c:115
the stack head
Definition: stack.c:62
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
union domain * domain
gen_tabulated_p tabulated
number of chunks to hold this data.
Value type.
Definition: genread.h:115
gen_chunk chunk
Definition: genread.h:118
gen_chunk * chunkp
Definition: genread.h:119
char * s
Definition: genread.h:122
intptr_t val
Definition: genread.h:121
cons * consp
Definition: genread.h:120
char c
Definition: genread.h:124
double d
Definition: genread.h:123
A DOMAIN union describes the structure of a user type.
struct domain::@2 ex
void *(* read)(FILE *, int(*)(void))
int type
EXTERNAL.
struct domain::@3 ba
A gen_chunk is used to store every object.
Definition: genC.h:58
_int i
Definition: genC.h:62
union gen_chunk * p
Definition: genC.h:69
string s
Definition: genC.h:64
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