summaryrefslogtreecommitdiffstats
path: root/hl/src/H5LTparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'hl/src/H5LTparse.c')
-rw-r--r--hl/src/H5LTparse.c1006
1 files changed, 1006 insertions, 0 deletions
diff --git a/hl/src/H5LTparse.c b/hl/src/H5LTparse.c
new file mode 100644
index 0000000..61dbdf1
--- /dev/null
+++ b/hl/src/H5LTparse.c
@@ -0,0 +1,1006 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* This file was generated by Yacc with the command "yacc -o H5LTparse.c -d H5LTparse.y"
+ * Do NOT modify it by hand.
+ */
+
+#ifndef lint
+static char const
+yyrcsid[] = "$FreeBSD: src/usr.bin/yacc/skeleton.c,v 1.28 2000/01/17 02:04:06 bde Exp $";
+#endif
+#include <stdlib.h>
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+#define YYLEX yylex()
+#define YYEMPTY -1
+#define yyclearin (yychar=(YYEMPTY))
+#define yyerrok (yyerrflag=0)
+#define YYRECOVERING() (yyerrflag!=0)
+static int yygrowstack();
+#define YYPREFIX "yy"
+#line 2 "H5LTparse.y"
+#include<stdio.h>
+#include<string.h>
+#include<hdf5.h>
+
+extern int yylex();
+extern int yyerror(char *);
+
+#define STACK_SIZE 16
+
+/*structure for compound type information*/
+struct cmpd_info {
+ hid_t id; /*type ID*/
+ hbool_t is_field; /*flag to lexer for compound member*/
+ hbool_t first_memb; /*flag for first compound member*/
+};
+/*stack for nested compound type*/
+struct cmpd_info cmpd_stack[STACK_SIZE] = { 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
+ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
+ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
+ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1 };
+int csindex = -1; /*pointer to the top of compound stack*/
+
+/*structure for array type information*/
+struct arr_info {
+ hsize_t dims[H5S_MAX_RANK]; /*size of each dimension, limited to 32 dimensions*/
+ int ndims; /*number of dimensions*/
+ hbool_t is_dim; /*flag to lexer for dimension*/
+};
+/*stack for nested array type*/
+struct arr_info arr_stack[STACK_SIZE];
+int asindex = -1; /*pointer to the top of array stack*/
+
+hbool_t is_str_size = 0; /*flag to lexer for string size*/
+hbool_t is_str_pad = 0; /*flag to lexer for string padding*/
+
+hid_t enum_id; /*type ID*/
+hbool_t is_enum = 0; /*flag to lexer for enum type*/
+hbool_t is_enum_memb = 0; /*flag to lexer for enum member*/
+char* enum_memb_symbol; /*enum member symbol string*/
+
+hbool_t is_opq_size = 0; /*flag to lexer for opaque type size*/
+
+#line 45 "H5LTparse.y"
+typedef union {
+ int ival; /*for integer token*/
+ char *sval; /*for name string*/
+} YYSTYPE;
+#line 65 "H5LTparse.c"
+#define YYERRCODE 256
+#define H5T_STD_I8BE_TOKEN 257
+#define H5T_STD_I8LE_TOKEN 258
+#define H5T_STD_I16BE_TOKEN 259
+#define H5T_STD_I16LE_TOKEN 260
+#define H5T_STD_I32BE_TOKEN 261
+#define H5T_STD_I32LE_TOKEN 262
+#define H5T_STD_I64BE_TOKEN 263
+#define H5T_STD_I64LE_TOKEN 264
+#define H5T_STD_U8BE_TOKEN 265
+#define H5T_STD_U8LE_TOKEN 266
+#define H5T_STD_U16BE_TOKEN 267
+#define H5T_STD_U16LE_TOKEN 268
+#define H5T_STD_U32BE_TOKEN 269
+#define H5T_STD_U32LE_TOKEN 270
+#define H5T_STD_U64BE_TOKEN 271
+#define H5T_STD_U64LE_TOKEN 272
+#define H5T_NATIVE_CHAR_TOKEN 273
+#define H5T_NATIVE_SCHAR_TOKEN 274
+#define H5T_NATIVE_UCHAR_TOKEN 275
+#define H5T_NATIVE_SHORT_TOKEN 276
+#define H5T_NATIVE_USHORT_TOKEN 277
+#define H5T_NATIVE_INT_TOKEN 278
+#define H5T_NATIVE_UINT_TOKEN 279
+#define H5T_NATIVE_LONG_TOKEN 280
+#define H5T_NATIVE_ULONG_TOKEN 281
+#define H5T_NATIVE_LLONG_TOKEN 282
+#define H5T_NATIVE_ULLONG_TOKEN 283
+#define H5T_IEEE_F32BE_TOKEN 284
+#define H5T_IEEE_F32LE_TOKEN 285
+#define H5T_IEEE_F64BE_TOKEN 286
+#define H5T_IEEE_F64LE_TOKEN 287
+#define H5T_NATIVE_FLOAT_TOKEN 288
+#define H5T_NATIVE_DOUBLE_TOKEN 289
+#define H5T_NATIVE_LDOUBLE_TOKEN 290
+#define H5T_STRING_TOKEN 291
+#define STRSIZE_TOKEN 292
+#define STRPAD_TOKEN 293
+#define CSET_TOKEN 294
+#define CTYPE_TOKEN 295
+#define H5T_VARIABLE_TOKEN 296
+#define H5T_STR_NULLTERM_TOKEN 297
+#define H5T_STR_NULLPAD_TOKEN 298
+#define H5T_STR_SPACEPAD_TOKEN 299
+#define H5T_CSET_ASCII_TOKEN 300
+#define H5T_C_S1_TOKEN 301
+#define H5T_FORTRAN_S1_TOKEN 302
+#define H5T_OPAQUE_TOKEN 303
+#define OPQ_SIZE_TOKEN 304
+#define H5T_COMPOUND_TOKEN 305
+#define H5T_ENUM_TOKEN 306
+#define H5T_ARRAY_TOKEN 307
+#define H5T_VLEN_TOKEN 308
+#define STRING 309
+#define NUMBER 310
+const short yylhs[] = { -1,
+ 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
+ 2, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
+ 7, 7, 7, 7, 7, 11, 3, 12, 12, 14,
+ 13, 15, 16, 4, 17, 17, 20, 21, 18, 19,
+ 5, 23, 24, 10, 22, 26, 28, 29, 31, 33,
+ 8, 27, 27, 30, 30, 30, 32, 25, 25, 35,
+ 9, 34, 34, 39, 36, 37, 38,
+};
+const short yylen[] = { 2,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 5, 0, 2, 0,
+ 6, 1, 0, 6, 0, 2, 0, 0, 5, 1,
+ 4, 0, 0, 8, 1, 0, 0, 0, 0, 0,
+ 20, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 7, 0, 2, 0, 6, 1, 1,
+};
+const short yydefred[] = { 0,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 0, 0, 46, 0, 53, 0,
+ 0, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 0, 0, 0, 0, 0, 0, 0, 62, 48,
+ 0, 55, 0, 78, 79, 0, 0, 0, 80, 0,
+ 61, 66, 65, 0, 47, 50, 49, 82, 57, 0,
+ 56, 0, 63, 0, 0, 0, 54, 67, 0, 0,
+ 81, 0, 83, 60, 58, 0, 64, 52, 0, 86,
+ 0, 0, 72, 73, 0, 0, 84, 59, 68, 51,
+ 0, 0, 87, 0, 0, 85, 74, 75, 76, 0,
+ 69, 0, 0, 77, 0, 70, 0, 71,
+};
+const short yydgoto[] = { 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 54, 68, 77, 84, 99, 56, 70, 81, 95, 86,
+ 102, 74, 67, 89, 66, 82, 105, 96, 112, 120,
+ 122, 125, 127, 85, 78, 93, 101, 114, 111,
+};
+const short yysindex[] = { -255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -81, -80, 0, -79, 0, -78,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -249, -257, -74, -203, -41, -255, -261, 0, 0,
+ 25, 0, -40, 0, 0, 28, -222, -39, 0, -91,
+ 0, 0, 0, 30, 0, 0, 0, 0, 0, -35,
+ 0, -201, 0, 59, -33, -213, 0, 0, -27, -210,
+ 0, -209, 0, 0, 0, -215, 0, 0, 67, 0,
+ 68, 10, 0, 0, 45, 46, 0, 0, 0, 0,
+ -204, -186, 0, 49, -260, 0, 0, 0, 0, 50,
+ 0, -184, -189, 0, 53, 0, -12, 0,
+};
+const short yyrindex[] = { 114,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+const short yygindex[] = { 0,
+ 26, 0, 0, 0, 0, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+#define YYTABLESIZE 269
+const short yytable[] = { 79,
+ 92, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 117, 118, 119, 64,
+ 65, 52, 53, 55, 57, 58, 59, 36, 60, 37,
+ 38, 39, 40, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 103, 62, 63, 69, 71, 75, 72, 73, 83, 87,
+ 88, 91, 90, 76, 104, 80, 94, 97, 98, 100,
+ 106, 107, 108, 109, 110, 113, 115, 116, 121, 123,
+ 124, 126, 128, 1, 61, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 36, 0, 37, 38, 39, 40, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 36, 0, 37, 38, 39, 40,
+};
+const short yycheck[] = { 91,
+ 34, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 297, 298, 299, 301,
+ 302, 123, 123, 123, 123, 295, 304, 303, 123, 305,
+ 306, 307, 308, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 296, 123, 57, 59, 125, 125, 59, 310, 59, 125,
+ 292, 125, 34, 68, 310, 70, 310, 125, 309, 309,
+ 34, 34, 93, 59, 59, 310, 293, 59, 59, 294,
+ 300, 59, 125, 0, 55, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 303, -1, 305, 306, 307, 308, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 303, -1, 305, 306, 307, 308,
+};
+#define YYFINAL 41
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 310
+#if YYDEBUG
+const char * const yyname[] = {
+"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+"'\"'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+"H5T_STD_I8BE_TOKEN","H5T_STD_I8LE_TOKEN","H5T_STD_I16BE_TOKEN",
+"H5T_STD_I16LE_TOKEN","H5T_STD_I32BE_TOKEN","H5T_STD_I32LE_TOKEN",
+"H5T_STD_I64BE_TOKEN","H5T_STD_I64LE_TOKEN","H5T_STD_U8BE_TOKEN",
+"H5T_STD_U8LE_TOKEN","H5T_STD_U16BE_TOKEN","H5T_STD_U16LE_TOKEN",
+"H5T_STD_U32BE_TOKEN","H5T_STD_U32LE_TOKEN","H5T_STD_U64BE_TOKEN",
+"H5T_STD_U64LE_TOKEN","H5T_NATIVE_CHAR_TOKEN","H5T_NATIVE_SCHAR_TOKEN",
+"H5T_NATIVE_UCHAR_TOKEN","H5T_NATIVE_SHORT_TOKEN","H5T_NATIVE_USHORT_TOKEN",
+"H5T_NATIVE_INT_TOKEN","H5T_NATIVE_UINT_TOKEN","H5T_NATIVE_LONG_TOKEN",
+"H5T_NATIVE_ULONG_TOKEN","H5T_NATIVE_LLONG_TOKEN","H5T_NATIVE_ULLONG_TOKEN",
+"H5T_IEEE_F32BE_TOKEN","H5T_IEEE_F32LE_TOKEN","H5T_IEEE_F64BE_TOKEN",
+"H5T_IEEE_F64LE_TOKEN","H5T_NATIVE_FLOAT_TOKEN","H5T_NATIVE_DOUBLE_TOKEN",
+"H5T_NATIVE_LDOUBLE_TOKEN","H5T_STRING_TOKEN","STRSIZE_TOKEN","STRPAD_TOKEN",
+"CSET_TOKEN","CTYPE_TOKEN","H5T_VARIABLE_TOKEN","H5T_STR_NULLTERM_TOKEN",
+"H5T_STR_NULLPAD_TOKEN","H5T_STR_SPACEPAD_TOKEN","H5T_CSET_ASCII_TOKEN",
+"H5T_C_S1_TOKEN","H5T_FORTRAN_S1_TOKEN","H5T_OPAQUE_TOKEN","OPQ_SIZE_TOKEN",
+"H5T_COMPOUND_TOKEN","H5T_ENUM_TOKEN","H5T_ARRAY_TOKEN","H5T_VLEN_TOKEN",
+"STRING","NUMBER",
+};
+const char * const yyrule[] = {
+"$accept : start",
+"start :",
+"start : ddl_type",
+"ddl_type : atomic_type",
+"ddl_type : compound_type",
+"ddl_type : array_type",
+"ddl_type : vlen_type",
+"atomic_type : integer_type",
+"atomic_type : fp_type",
+"atomic_type : string_type",
+"atomic_type : enum_type",
+"atomic_type : opaque_type",
+"integer_type : H5T_STD_I8BE_TOKEN",
+"integer_type : H5T_STD_I8LE_TOKEN",
+"integer_type : H5T_STD_I16BE_TOKEN",
+"integer_type : H5T_STD_I16LE_TOKEN",
+"integer_type : H5T_STD_I32BE_TOKEN",
+"integer_type : H5T_STD_I32LE_TOKEN",
+"integer_type : H5T_STD_I64BE_TOKEN",
+"integer_type : H5T_STD_I64LE_TOKEN",
+"integer_type : H5T_STD_U8BE_TOKEN",
+"integer_type : H5T_STD_U8LE_TOKEN",
+"integer_type : H5T_STD_U16BE_TOKEN",
+"integer_type : H5T_STD_U16LE_TOKEN",
+"integer_type : H5T_STD_U32BE_TOKEN",
+"integer_type : H5T_STD_U32LE_TOKEN",
+"integer_type : H5T_STD_U64BE_TOKEN",
+"integer_type : H5T_STD_U64LE_TOKEN",
+"integer_type : H5T_NATIVE_CHAR_TOKEN",
+"integer_type : H5T_NATIVE_SCHAR_TOKEN",
+"integer_type : H5T_NATIVE_UCHAR_TOKEN",
+"integer_type : H5T_NATIVE_SHORT_TOKEN",
+"integer_type : H5T_NATIVE_USHORT_TOKEN",
+"integer_type : H5T_NATIVE_INT_TOKEN",
+"integer_type : H5T_NATIVE_UINT_TOKEN",
+"integer_type : H5T_NATIVE_LONG_TOKEN",
+"integer_type : H5T_NATIVE_ULONG_TOKEN",
+"integer_type : H5T_NATIVE_LLONG_TOKEN",
+"integer_type : H5T_NATIVE_ULLONG_TOKEN",
+"fp_type : H5T_IEEE_F32BE_TOKEN",
+"fp_type : H5T_IEEE_F32LE_TOKEN",
+"fp_type : H5T_IEEE_F64BE_TOKEN",
+"fp_type : H5T_IEEE_F64LE_TOKEN",
+"fp_type : H5T_NATIVE_FLOAT_TOKEN",
+"fp_type : H5T_NATIVE_DOUBLE_TOKEN",
+"fp_type : H5T_NATIVE_LDOUBLE_TOKEN",
+"$$1 :",
+"compound_type : H5T_COMPOUND_TOKEN $$1 '{' memb_list '}'",
+"memb_list :",
+"memb_list : memb_list memb_def",
+"$$2 :",
+"memb_def : ddl_type $$2 '\"' field_name '\"' ';'",
+"field_name : STRING",
+"$$3 :",
+"array_type : H5T_ARRAY_TOKEN $$3 '{' dim_list ddl_type '}'",
+"dim_list :",
+"dim_list : dim_list dim",
+"$$4 :",
+"$$5 :",
+"dim : '[' $$4 dimsize $$5 ']'",
+"dimsize : NUMBER",
+"vlen_type : H5T_VLEN_TOKEN '{' ddl_type '}'",
+"$$6 :",
+"$$7 :",
+"opaque_type : H5T_OPAQUE_TOKEN '{' OPQ_SIZE_TOKEN $$6 opaque_size ';' $$7 '}'",
+"opaque_size : NUMBER",
+"$$8 :",
+"$$9 :",
+"$$10 :",
+"$$11 :",
+"$$12 :",
+"string_type : H5T_STRING_TOKEN '{' CTYPE_TOKEN ctype ';' $$8 STRSIZE_TOKEN $$9 strsize ';' $$10 STRPAD_TOKEN strpad ';' $$11 CSET_TOKEN cset ';' $$12 '}'",
+"strsize : H5T_VARIABLE_TOKEN",
+"strsize : NUMBER",
+"strpad : H5T_STR_NULLTERM_TOKEN",
+"strpad : H5T_STR_NULLPAD_TOKEN",
+"strpad : H5T_STR_SPACEPAD_TOKEN",
+"cset : H5T_CSET_ASCII_TOKEN",
+"ctype : H5T_C_S1_TOKEN",
+"ctype : H5T_FORTRAN_S1_TOKEN",
+"$$13 :",
+"enum_type : H5T_ENUM_TOKEN '{' integer_type ';' $$13 enum_list '}'",
+"enum_list :",
+"enum_list : enum_list enum_def",
+"$$14 :",
+"enum_def : '\"' enum_symbol '\"' $$14 enum_val ';'",
+"enum_symbol : STRING",
+"enum_val : NUMBER",
+};
+#endif
+#if YYDEBUG
+#include <stdio.h>
+#endif
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 10000
+#define YYMAXDEPTH 10000
+#endif
+#endif
+#define YYINITSTACKSIZE 200
+int yydebug;
+int yynerrs;
+int yyerrflag;
+int yychar;
+short *yyssp;
+YYSTYPE *yyvsp;
+YYSTYPE yyval;
+YYSTYPE yylval;
+short *yyss;
+short *yysslim;
+YYSTYPE *yyvs;
+int yystacksize;
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack()
+{
+ int newsize, i;
+ short *newss;
+ YYSTYPE *newvs;
+
+ if ((newsize = yystacksize) == 0)
+ newsize = YYINITSTACKSIZE;
+ else if (newsize >= YYMAXDEPTH)
+ return -1;
+ else if ((newsize *= 2) > YYMAXDEPTH)
+ newsize = YYMAXDEPTH;
+ i = yyssp - yyss;
+ newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
+ (short *)malloc(newsize * sizeof *newss);
+ if (newss == NULL)
+ return -1;
+ yyss = newss;
+ yyssp = newss + i;
+ newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
+ (YYSTYPE *)malloc(newsize * sizeof *newvs);
+ if (newvs == NULL)
+ return -1;
+ yyvs = newvs;
+ yyvsp = newvs + i;
+ yystacksize = newsize;
+ yysslim = yyss + newsize - 1;
+ return 0;
+}
+
+#define YYABORT goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR goto yyerrlab
+
+#ifndef YYPARSE_PARAM
+#if defined(__cplusplus) || __STDC__
+#define YYPARSE_PARAM_ARG void
+#define YYPARSE_PARAM_DECL
+#else /* ! ANSI-C/C++ */
+#define YYPARSE_PARAM_ARG
+#define YYPARSE_PARAM_DECL
+#endif /* ANSI-C/C++ */
+#else /* YYPARSE_PARAM */
+#ifndef YYPARSE_PARAM_TYPE
+#define YYPARSE_PARAM_TYPE void *
+#endif
+#if defined(__cplusplus) || __STDC__
+#define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#else /* ! ANSI-C/C++ */
+#define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM;
+#endif /* ANSI-C/C++ */
+#endif /* ! YYPARSE_PARAM */
+
+int
+yyparse (YYPARSE_PARAM_ARG)
+ YYPARSE_PARAM_DECL
+{
+ register int yym, yyn, yystate;
+#if YYDEBUG
+ register const char *yys;
+
+ if ((yys = getenv("YYDEBUG")))
+ {
+ yyn = *yys;
+ if (yyn >= '0' && yyn <= '9')
+ yydebug = yyn - '0';
+ }
+#endif
+
+ yynerrs = 0;
+ yyerrflag = 0;
+ yychar = (-1);
+
+ if (yyss == NULL && yygrowstack()) goto yyoverflow;
+ yyssp = yyss;
+ yyvsp = yyvs;
+ *yyssp = yystate = 0;
+
+yyloop:
+ if ((yyn = yydefred[yystate])) goto yyreduce;
+ if (yychar < 0)
+ {
+ if ((yychar = yylex()) < 0) yychar = 0;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, yystate, yychar, yys);
+ }
+#endif
+ }
+ if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, shifting to state %d\n",
+ YYPREFIX, yystate, yytable[yyn]);
+#endif
+ if (yyssp >= yysslim && yygrowstack())
+ {
+ goto yyoverflow;
+ }
+ *++yyssp = yystate = yytable[yyn];
+ *++yyvsp = yylval;
+ yychar = (-1);
+ if (yyerrflag > 0) --yyerrflag;
+ goto yyloop;
+ }
+ if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
+ {
+ yyn = yytable[yyn];
+ goto yyreduce;
+ }
+ if (yyerrflag) goto yyinrecovery;
+#if defined(lint) || defined(__GNUC__)
+ goto yynewerror;
+#endif
+yynewerror:
+ yyerror("syntax error");
+#if defined(lint) || defined(__GNUC__)
+ goto yyerrlab;
+#endif
+yyerrlab:
+ ++yynerrs;
+yyinrecovery:
+ if (yyerrflag < 3)
+ {
+ yyerrflag = 3;
+ for (;;)
+ {
+ if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
+#endif
+ if (yyssp >= yysslim && yygrowstack())
+ {
+ goto yyoverflow;
+ }
+ *++yyssp = yystate = yytable[yyn];
+ *++yyvsp = yylval;
+ goto yyloop;
+ }
+ else
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: error recovery discarding state %d\n",
+ YYPREFIX, *yyssp);
+#endif
+ if (yyssp <= yyss) goto yyabort;
+ --yyssp;
+ --yyvsp;
+ }
+ }
+ }
+ else
+ {
+ if (yychar == 0) goto yyabort;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
+ YYPREFIX, yystate, yychar, yys);
+ }
+#endif
+ yychar = (-1);
+ goto yyloop;
+ }
+yyreduce:
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+ YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+ yym = yylen[yyn];
+ yyval = yyvsp[1-yym];
+ switch (yyn)
+ {
+case 1:
+#line 77 "H5LTparse.y"
+{ memset(arr_stack, 0, STACK_SIZE*sizeof(struct arr_info)); /*initialize here?*/ }
+break;
+case 2:
+#line 78 "H5LTparse.y"
+{ return yyval.ival;}
+break;
+case 12:
+#line 92 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I8BE); }
+break;
+case 13:
+#line 93 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I8LE); }
+break;
+case 14:
+#line 94 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I16BE); }
+break;
+case 15:
+#line 95 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I16LE); }
+break;
+case 16:
+#line 96 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I32BE); }
+break;
+case 17:
+#line 97 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I32LE); }
+break;
+case 18:
+#line 98 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I64BE); }
+break;
+case 19:
+#line 99 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_I64LE); }
+break;
+case 20:
+#line 100 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U8BE); }
+break;
+case 21:
+#line 101 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U8LE); }
+break;
+case 22:
+#line 102 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U16BE); }
+break;
+case 23:
+#line 103 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U16LE); }
+break;
+case 24:
+#line 104 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U32BE); }
+break;
+case 25:
+#line 105 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U32LE); }
+break;
+case 26:
+#line 106 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U64BE); }
+break;
+case 27:
+#line 107 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_STD_U64LE); }
+break;
+case 28:
+#line 108 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_CHAR); }
+break;
+case 29:
+#line 109 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_SCHAR); }
+break;
+case 30:
+#line 110 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_UCHAR); }
+break;
+case 31:
+#line 111 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_SHORT); }
+break;
+case 32:
+#line 112 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_USHORT); }
+break;
+case 33:
+#line 113 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_INT); }
+break;
+case 34:
+#line 114 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_UINT); }
+break;
+case 35:
+#line 115 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_LONG); }
+break;
+case 36:
+#line 116 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_ULONG); }
+break;
+case 37:
+#line 117 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_LLONG); }
+break;
+case 38:
+#line 118 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_ULLONG); }
+break;
+case 39:
+#line 121 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_IEEE_F32BE); }
+break;
+case 40:
+#line 122 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_IEEE_F32LE); }
+break;
+case 41:
+#line 123 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_IEEE_F64BE); }
+break;
+case 42:
+#line 124 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_IEEE_F64LE); }
+break;
+case 43:
+#line 125 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_FLOAT); }
+break;
+case 44:
+#line 126 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_DOUBLE); }
+break;
+case 45:
+#line 127 "H5LTparse.y"
+{ yyval.ival = H5Tcopy(H5T_NATIVE_LDOUBLE); }
+break;
+case 46:
+#line 131 "H5LTparse.y"
+{ csindex++; cmpd_stack[csindex].id = H5Tcreate(H5T_COMPOUND, 1); /*temporarily set size to 1*/ }
+break;
+case 47:
+#line 133 "H5LTparse.y"
+{ yyval.ival = cmpd_stack[csindex].id;
+ cmpd_stack[csindex].id = 0;
+ cmpd_stack[csindex].first_memb = 1;
+ csindex--;
+ }
+break;
+case 50:
+#line 142 "H5LTparse.y"
+{ cmpd_stack[csindex].is_field = 1; /*notify lexer a compound member is parsed*/ }
+break;
+case 51:
+#line 144 "H5LTparse.y"
+{ int origin_size, new_size;
+ hid_t dtype_id = cmpd_stack[csindex].id;
+
+ /*Adjust size and insert member. Leave no space between.*/
+ if(cmpd_stack[csindex].first_memb) { /*reclaim the size 1 temporarily set*/
+ new_size = H5Tget_size(yyvsp[-5].ival);
+ H5Tset_size(dtype_id, new_size);
+ /*member name is saved in yylval.sval by lexer*/
+ H5Tinsert(dtype_id, yylval.sval, 0, yyvsp[-5].ival);
+
+ cmpd_stack[csindex].first_memb = 0;
+ } else {
+ origin_size = H5Tget_size(dtype_id);
+ new_size = origin_size + H5Tget_size(yyvsp[-5].ival);
+ H5Tset_size(dtype_id, new_size);
+ H5Tinsert(dtype_id, yylval.sval, origin_size, yyvsp[-5].ival);
+ }
+
+ cmpd_stack[csindex].is_field = 0;
+ H5Tclose(yyvsp[-5].ival);
+
+ new_size = H5Tget_size(dtype_id);
+ }
+break;
+case 53:
+#line 171 "H5LTparse.y"
+{ asindex++; /*pushd onto the stack*/ }
+break;
+case 54:
+#line 173 "H5LTparse.y"
+{
+ yyval.ival = H5Tarray_create(yyvsp[-1].ival, arr_stack[asindex].ndims, arr_stack[asindex].dims, NULL);
+ arr_stack[asindex].ndims = 0;
+ asindex--;
+ H5Tclose(yyvsp[-1].ival);
+ }
+break;
+case 57:
+#line 183 "H5LTparse.y"
+{ arr_stack[asindex].is_dim = 1; /*notice lexer of dimension size*/ }
+break;
+case 58:
+#line 184 "H5LTparse.y"
+{ int ndims = arr_stack[asindex].ndims;
+ arr_stack[asindex].dims[ndims] = (hsize_t)yylval.ival;
+ arr_stack[asindex].ndims++;
+ arr_stack[asindex].is_dim = 0;
+ }
+break;
+case 61:
+#line 195 "H5LTparse.y"
+{ yyval.ival = H5Tvlen_create(yyvsp[-1].ival); H5Tclose(yyvsp[-1].ival); }
+break;
+case 62:
+#line 200 "H5LTparse.y"
+{ is_opq_size = 1; }
+break;
+case 63:
+#line 201 "H5LTparse.y"
+{
+ size_t size = (size_t)yylval.ival;
+ yyval.ival = H5Tcreate(H5T_OPAQUE, size);
+ is_opq_size = 0;
+ }
+break;
+case 64:
+#line 206 "H5LTparse.y"
+{ yyval.ival = yyvsp[-1].ival; }
+break;
+case 66:
+#line 214 "H5LTparse.y"
+{
+ if(yyvsp[-1].ival == H5T_C_S1_TOKEN)
+ yyval.ival = H5Tcopy(H5T_C_S1);
+ else if(yyvsp[-1].ival == H5T_FORTRAN_S1_TOKEN)
+ yyval.ival = H5Tcopy(H5T_FORTRAN_S1);
+ }
+break;
+case 67:
+#line 220 "H5LTparse.y"
+{ is_str_size = 1; }
+break;
+case 68:
+#line 221 "H5LTparse.y"
+{
+ if(yyvsp[-1].ival == H5T_VARIABLE_TOKEN)
+ H5Tset_size(yyvsp[-4].ival, H5T_VARIABLE);
+ else
+ H5Tset_size(yyvsp[-4].ival, yylval.ival);
+ is_str_size = 0;
+ }
+break;
+case 69:
+#line 229 "H5LTparse.y"
+{
+ if(yyvsp[-1].ival == H5T_STR_NULLTERM_TOKEN)
+ H5Tset_strpad(yyvsp[-8].ival, H5T_STR_NULLTERM);
+ else if(yyvsp[-1].ival == H5T_STR_NULLPAD_TOKEN)
+ H5Tset_strpad(yyvsp[-8].ival, H5T_STR_NULLPAD);
+ else if(yyvsp[-1].ival == H5T_STR_SPACEPAD_TOKEN)
+ H5Tset_strpad(yyvsp[-8].ival, H5T_STR_SPACEPAD);
+ }
+break;
+case 70:
+#line 238 "H5LTparse.y"
+{
+ if(yyvsp[-1].ival == H5T_CSET_ASCII_TOKEN)
+ H5Tset_cset(yyvsp[-12].ival, H5T_CSET_ASCII);
+ }
+break;
+case 71:
+#line 242 "H5LTparse.y"
+{ yyval.ival = yyvsp[-14].ival; }
+break;
+case 72:
+#line 245 "H5LTparse.y"
+{yyval.ival = H5T_VARIABLE_TOKEN;}
+break;
+case 74:
+#line 248 "H5LTparse.y"
+{yyval.ival = H5T_STR_NULLTERM_TOKEN;}
+break;
+case 75:
+#line 249 "H5LTparse.y"
+{yyval.ival = H5T_STR_NULLPAD_TOKEN;}
+break;
+case 76:
+#line 250 "H5LTparse.y"
+{yyval.ival = H5T_STR_SPACEPAD_TOKEN;}
+break;
+case 77:
+#line 252 "H5LTparse.y"
+{yyval.ival = H5T_CSET_ASCII_TOKEN;}
+break;
+case 78:
+#line 254 "H5LTparse.y"
+{yyval.ival = H5T_C_S1_TOKEN;}
+break;
+case 79:
+#line 255 "H5LTparse.y"
+{yyval.ival = H5T_FORTRAN_S1_TOKEN;}
+break;
+case 80:
+#line 259 "H5LTparse.y"
+{ is_enum = 1; enum_id = H5Tenum_create(yyvsp[-1].ival); H5Tclose(yyvsp[-1].ival); }
+break;
+case 81:
+#line 261 "H5LTparse.y"
+{ is_enum = 0; /*reset*/ yyval.ival = enum_id; }
+break;
+case 84:
+#line 266 "H5LTparse.y"
+{
+ is_enum_memb = 1; /*indicate member of enum*/
+ enum_memb_symbol = strdup(yylval.sval);
+ }
+break;
+case 85:
+#line 271 "H5LTparse.y"
+{
+ int memb_val;
+ if(is_enum && is_enum_memb) { /*if it's an enum member*/
+ H5Tenum_insert(enum_id, enum_memb_symbol, (memb_val=yylval.ival,&memb_val));
+ is_enum_memb = 0;
+ if(enum_memb_symbol) free(enum_memb_symbol);
+ }
+ }
+break;
+#line 933 "H5LTparse.c"
+ }
+ yyssp -= yym;
+ yystate = *yyssp;
+ yyvsp -= yym;
+ yym = yylhs[yyn];
+ if (yystate == 0 && yym == 0)
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+ yystate = YYFINAL;
+ *++yyssp = YYFINAL;
+ *++yyvsp = yyval;
+ if (yychar < 0)
+ {
+ if ((yychar = yylex()) < 0) yychar = 0;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, YYFINAL, yychar, yys);
+ }
+#endif
+ }
+ if (yychar == 0) goto yyaccept;
+ goto yyloop;
+ }
+ if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
+ yystate = yytable[yyn];
+ else
+ yystate = yydgoto[yym];
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yyssp, yystate);
+#endif
+ if (yyssp >= yysslim && yygrowstack())
+ {
+ goto yyoverflow;
+ }
+ *++yyssp = yystate;
+ *++yyvsp = yyval;
+ goto yyloop;
+yyoverflow:
+ yyerror("yacc stack overflow");
+yyabort:
+ return (1);
+yyaccept:
+ return (0);
+}