From 483cbf94fe344110b430e3e31a68b956d3f81e09 Mon Sep 17 00:00:00 2001 From: Dennis Heimbigner Date: Wed, 10 Jul 2013 20:00:48 +0000 Subject: [PATCH] Added code to support NIL values for strings in ncgen. Needs test cases. --- cf | 4 +- ncgen/Make0 | 9 +- ncgen/bindata.c | 16 +- ncgen/cdata.c | 16 +- ncgen/cvt.c | 6 + ncgen/data.c | 2 + ncgen/data.h | 3 + ncgen/env | 2 +- ncgen/genbin.c | 6 +- ncgen/genc.c | 45 +- ncgen/generate.c | 2 +- ncgen/ncgen.1 | 26 +- ncgen/ncgen.h | 4 +- ncgen/ncgen.l | 10 + ncgen/ncgen.y | 9 +- ncgen/ncgentab.c | 822 +++++++++++++++--------------- ncgen/ncgentab.h | 23 +- ncgen/ncgenyy.c | 1238 +++++++++++++++++++++++---------------------- ncgen/semantics.c | 77 ++- 19 files changed, 1214 insertions(+), 1106 deletions(-) diff --git a/cf b/cf index 02cf25566..0fcfcbdb7 100644 --- a/cf +++ b/cf @@ -16,8 +16,8 @@ DAP=1 #M32=1 #M64=1 -#INSTALL=1 -#PREFIX=/usr/local +INSTALL=1 +PREFIX=/usr/local if test "x$cmds" = x ; then cmds="" diff --git a/ncgen/Make0 b/ncgen/Make0 index 863e03d64..1d3a0c119 100644 --- a/ncgen/Make0 +++ b/ncgen/Make0 @@ -1,9 +1,12 @@ # Test c output -T=z +T=niltest #VG=valgrind --leak-check=full -CFLAGS=-I../include -I/share/ed/local/spock/include -LDFLAGS=../liblib/.libs/libnetcdf.a -L/share/ed/local/spock/lib -lhdf5_hl -lhdf5 -lz -lcurl -lm -llber -lldap -lrt -lssl -lcrypto -ldl +#CFLAGS=-I../include -I/share/ed/local/spock/include +#LDFLAGS=../liblib/.libs/libnetcdf.a -L/share/ed/local/spock/lib -lhdf5_hl -lhdf5 -lz -lcurl -lm -llber -lldap -lrt -lssl -lcrypto -ldl + +CFLAGS=-I../include -I/user/local/include +LDFLAGS=../liblib/.libs/libnetcdf.a -L/usr/local/lib -lhdf5_hl -lhdf5 -lz -lcurl -lm -lrt -ldl CLASSPATH=".:ncCore-4.2.jar" diff --git a/ncgen/bindata.c b/ncgen/bindata.c index 8032d2648..f91f70a18 100644 --- a/ncgen/bindata.c +++ b/ncgen/bindata.c @@ -76,14 +76,20 @@ bin_constant(Generator* generator, Constant* con, Bytebuffer* buf,...) su64.i64 = con->value.uint64v; bbAppendn(buf,(void*)su64.ch,sizeof(su64.ch)); } break; + case NC_NIL: case NC_STRING: { char* ptr; int len = (size_t)con->value.stringv.len; - ptr = (char*)malloc(len+1); - memcpy(ptr,con->value.stringv.stringv,len); - ptr[len] = '\0'; - bbAppendn(buf,(void*)&ptr,sizeof(ptr)); - } break; + if(len == 0 && con->value.stringv.stringv == NULL) { + char* nil = NULL; + bbAppendn(buf,(void*)&nil,sizeof(nil)); + } else { + ptr = (char*)malloc(len+1); + memcpy(ptr,con->value.stringv.stringv,len); + ptr[len] = '\0'; + bbAppendn(buf,(void*)&ptr,sizeof(ptr)); + } + } break; default: PANIC1("bin_constant: unexpected type: %d",con->nctype); } diff --git a/ncgen/cdata.c b/ncgen/cdata.c index 8c6fe54a2..ecb222169 100644 --- a/ncgen/cdata.c +++ b/ncgen/cdata.c @@ -81,13 +81,19 @@ c_constant(Generator* generator, Constant* con, Bytebuffer* buf,...) case NC_ECONST: bbprintf(codetmp,"%s",cname(con->value.enumv)); break; + case NC_NIL: case NC_STRING: { /* handle separately */ - char* escaped = escapify(con->value.stringv.stringv, + if(con->value.stringv.len == 0 && con->value.stringv.stringv == NULL) { + char* nil = NULL; + bbprintf(codetmp,"NULL"); + } else { + char* escaped = escapify(con->value.stringv.stringv, '"',con->value.stringv.len); - special = poolalloc(1+2+strlen(escaped)); - strcpy(special,"\""); - strcat(special,escaped); - strcat(special,"\""); + special = poolalloc(1+2+strlen(escaped)); + strcpy(special,"\""); + strcat(special,escaped); + strcat(special,"\""); + } } break; case NC_OPAQUE: { char* p; diff --git a/ncgen/cvt.c b/ncgen/cvt.c index bab362f06..713def361 100644 --- a/ncgen/cvt.c +++ b/ncgen/cvt.c @@ -540,6 +540,12 @@ case CASE(NC_OPAQUE,NC_OPAQUE): tmp.opaquev.len = src->value.opaquev.len; tmp.opaquev.stringv[tmp.opaquev.len] = '\0'; break; +case CASE(NC_NIL,NC_NIL): + break; /* probably will never happen */ +case CASE(NC_NIL,NC_STRING): + tmp.stringv.len = 0; + tmp.stringv.stringv = NULL; + break; /* We are missing all CASE(X,NC_ECONST) cases*/ diff --git a/ncgen/data.c b/ncgen/data.c index 0fe8f984c..7c6a9b4a1 100644 --- a/ncgen/data.c +++ b/ncgen/data.c @@ -18,6 +18,8 @@ extern int lvsnprintf(char*, size_t, const char*, va_list); Constant nullconstant; Constant fillconstant; +Datalist nildatalist; // to support NIL keyword + Bytebuffer* codebuffer; Bytebuffer* codetmp; Bytebuffer* stmt; diff --git a/ncgen/data.h b/ncgen/data.h index 4aba56cda..ed42749ae 100644 --- a/ncgen/data.h +++ b/ncgen/data.h @@ -120,6 +120,8 @@ int srcline(Datasrc* ds); #define isfillconst(con) ((con)!=NULL && (con)->nctype == NC_FILLVALUE) #define constline(con) (con==NULL?0:(con)->lineno) +#define isnilconst(con) ((con)!=NULL && (con)->nctype == NC_NIL) + Constant* emptystringconst(int,Constant*); Constant cloneconstant(Constant* con); /* shallow clone*/ @@ -157,6 +159,7 @@ Constant* srcpeek(Datasrc*); extern Constant nullconstant; extern Constant fillconstant; +extern Constant nilconstant; /* From genchar.c */ void gen_charattr(Datalist*, Bytebuffer*); diff --git a/ncgen/env b/ncgen/env index c657f378a..77b20146a 100644 --- a/ncgen/env +++ b/ncgen/env @@ -1,7 +1,7 @@ # test: ../ncdump/cdl4/ref_const_test.cdl # test: ../ncdump/cdl4/ref_tst_chardata.cdl K="-k3" -F="fail.cdl" +F="niltest.cdl" #B="-B12" DBG="-d" #DBG="-D2" diff --git a/ncgen/genbin.c b/ncgen/genbin.c index b1bfd3fe1..637461da1 100644 --- a/ncgen/genbin.c +++ b/ncgen/genbin.c @@ -455,11 +455,11 @@ genbin_writeattr(Generator* generator, Symbol* asym, Bytebuffer* databuf, } break; #ifdef USE_NETCDF4 case NC_STRING: { - const char** data; + const char** data; data = (const char**)bbContents(databuf); stat = nc_put_att_string(grpid,varid,asym->name, - bbLength(databuf)/sizeof(char*), - data); + bbLength(databuf)/sizeof(char*), + data); } break; case NC_UBYTE: { unsigned char* data = (unsigned char*)bbContents(databuf); diff --git a/ncgen/genc.c b/ncgen/genc.c index 6bbfee5a1..f6c17e4c6 100644 --- a/ncgen/genc.c +++ b/ncgen/genc.c @@ -948,18 +948,18 @@ genc_writevar(Generator* generator, Symbol* vsym, Bytebuffer* code, } if(rank == 0) { - codelined(1,"size_t zero = 0;"); + codelined(1,"size_t count = 0;"); /* We make the data be an array so we do not need to ampersand it later => we need an outer pair of braces */ - commify(code); /* insert commas at proper places */ - bbprintf0(stmt,"%sstatic %s %s_data[1] = {%s};\n", + commify(code); /* insert commas at proper places */ + bbprintf0(stmt,"%sstatic %s %s_data[1] = {%s};\n", indented(1), ctypename(basetype), cname(vsym), bbContents(code)); codedump(stmt); - bbprintf0(stmt,"%sstat = nc_put_var1(%s, %s, &zero, %s_data);\n", + bbprintf0(stmt,"%sstat = nc_put_var1(%s, %s, &count, %s_data);\n", indented(1), groupncid(vsym->container), varncid(vsym), @@ -1055,27 +1055,26 @@ genc_writeattr(Generator* generator, Symbol* asym, Bytebuffer* code, cquotestring(code,'"'); } else { /* All other cases */ - /* Dump any vlen decls first */ - List* vlendecls; - generator_getstate(generator,(void**)&vlendecls); - if(vlendecls != NULL && listlength(vlendecls) > 0) { - int i; - for(i=0;i 0) { + int i; + for(i=0;ityp.basetype; nc_type typecode = basetype->typ.typecode; - if(typecode == NC_CHAR) { + if(typecode == NC_CHAR) { gen_charattr(asym->data,codebuf); } else { int uid; diff --git a/ncgen/ncgen.1 b/ncgen/ncgen.1 index c390c0223..ce9f455ab 100644 --- a/ncgen/ncgen.1 +++ b/ncgen/ncgen.1 @@ -359,6 +359,9 @@ distinguished variable attribute named `_FillValue'. The types of constants need not match the type declared for a variable; coercions are done to convert integers to floating point, for example. The constant `_' can be used to designate the fill value for a variable. +If the type of the variable is explicitly `string', then the special +constant `NIL` can be used to represent a nil string, which is not the +same as a zero length string. .SS "Primitive Data Types" .LP .RS @@ -594,6 +597,8 @@ type to ensure the proper choice. String constants are assumed to always be UTF-8 encoded. This specifically means that the string constant may actually contain multi-byte UTF-8 characters. +The special constant `NIL` can be used to represent a nil string, which is not the +same as a zero length string. .LP \fIOpaque\fP constants are represented as sequences of hexadecimal digits preceded by 0X or 0x: 0xaa34ffff, @@ -646,24 +651,25 @@ The type being referenced (t1) is the one within group g2, which in turn is nested in group g1. The similarity of this notation to Unix file paths is deliberate, and one can consider groups as a form of directory structure. -.HP -1. When name is not prefixed, then scope rules are applied to locate the +.LP +When name is not prefixed, then scope rules are applied to locate the specified declaration. Currently, there are three rules: one for dimensions, one for types and enumeration constants, and one for all others. .HP -2. When an unprefixed name of a dimension is used (as in a variable declaration), -ncgen first looks in the immediately enclosing group for the dimension. -If it is not found there, then it looks in the group enclosing this group. -This continues up the group hierarchy until the dimension is found, -or there are no more groups to search. +1. When an unprefixed name of a dimension is used (as in a +variable declaration), ncgen first looks in the immediately +enclosing group for the dimension. If it is not found +there, then it looks in the group enclosing this group. +This continues up the group hierarchy until the dimension is +found, or there are no more groups to search. .HP -3. For all other names, only the immediately enclosing group is searched. -.LP -When an unprefixed name of a type or an enumeration constant +2. When an unprefixed name of a type or an enumeration constant is used, ncgen searches the group tree using a pre-order depth-first search. This essentially means that it will find the matching declaration that precedes the reference textually in the cdl file and that is "highest" in the group hierarchy. +.HP +3. For all other names, only the immediately enclosing group is searched. .LP One final note. Forward references are not allowed. This means that specifying, for example, diff --git a/ncgen/ncgen.h b/ncgen/ncgen.h index b332863f2..52d0ebb64 100644 --- a/ncgen/ncgen.h +++ b/ncgen/ncgen.h @@ -41,7 +41,9 @@ #define NC_LIST NC_COMPOUND /* alias */ /* Extend nc types with generic fill value*/ -#define NC_FILLVALUE 31 +#define NC_FILLVALUE 31 +/* Extend nc types with NIL value*/ +#define NC_NIL 32 /* Must be a better way to do this */ #ifndef INFINITE diff --git a/ncgen/ncgen.l b/ncgen/ncgen.l index 624f31bc0..45bf1292d 100644 --- a/ncgen/ncgen.l +++ b/ncgen/ncgen.l @@ -258,6 +258,16 @@ NaNf|nanf { /* missing value (pre-2.4 backward compatibility) */ return lexdebug(FLOAT_CONST); } +NIL|nil|Nil { +#ifdef USE_NETCDF4 + if(c_flag != 0 || binary_flag != 0) + return lexdebug(NIL); + yyerror("NIL only allowed for netcdf-4 and for -lc or -lb"); +#else + yyerror("NIL only allowed for netcdf-4 and for -lc or -lb"); +#endif + } + {PATH} { bbClear(lextext); bbAppendn(lextext,(char*)yytext,yyleng+1); /* include null */ diff --git a/ncgen/ncgen.y b/ncgen/ncgen.y index e2bbf4f27..2fcb63945 100644 --- a/ncgen/ncgen.y +++ b/ncgen/ncgen.y @@ -162,7 +162,7 @@ Constant constant; UINT_CONST /* unsigned long long constant */ UINT64_CONST /* unsigned int constant */ FLOAT_CONST /* float constant */ - DOUBLE_CONST /* double constant */ + DOUBLE_CONST/* double constant */ DIMENSIONS /* keyword starting dimensions section, if any */ VARIABLES /* keyword starting variables section, if any */ NETCDF /* keyword declaring netcdf name */ @@ -175,6 +175,7 @@ Constant constant; GROUP PATH /* / or (/IDENT)+ */ FILLMARKER /* "_" as opposed to the attribute */ + NIL /* NIL */ _FILLVALUE _FORMAT _STORAGE @@ -805,6 +806,7 @@ constdata: simpleconstant {$$=$1;} | OPAQUESTRING {$$=makeconstdata(NC_OPAQUE);} | FILLMARKER {$$=makeconstdata(NC_FILLVALUE);} + | NIL {$$=makeconstdata(NC_NIL);} | path {$$=makeenumconst($1);} | function ; @@ -1042,11 +1044,14 @@ makeconstdata(nc_type nctype) con.value.opaquev.stringv = s; con.value.opaquev.len = len; } break; + + case NC_NIL: + break; /* no associated value*/ #endif case NC_FILLVALUE: break; /* no associated value*/ - + default: yyerror("Data constant: unexpected NC type: %s", nctypename(nctype)); diff --git a/ncgen/ncgentab.c b/ncgen/ncgentab.c index c77df0e19..270b66519 100644 --- a/ncgen/ncgentab.c +++ b/ncgen/ncgentab.c @@ -262,16 +262,17 @@ extern int ncgdebug; GROUP = 292, PATH = 293, FILLMARKER = 294, - _FILLVALUE = 295, - _FORMAT = 296, - _STORAGE = 297, - _CHUNKSIZES = 298, - _DEFLATELEVEL = 299, - _SHUFFLE = 300, - _ENDIANNESS = 301, - _NOFILL = 302, - _FLETCHER32 = 303, - DATASETID = 304 + NIL = 295, + _FILLVALUE = 296, + _FORMAT = 297, + _STORAGE = 298, + _CHUNKSIZES = 299, + _DEFLATELEVEL = 300, + _SHUFFLE = 301, + _ENDIANNESS = 302, + _NOFILL = 303, + _FLETCHER32 = 304, + DATASETID = 305 }; #endif @@ -291,7 +292,7 @@ Constant constant; /* Line 374 of yacc.c */ -#line 295 "ncgen.tab.c" +#line 296 "ncgen.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -319,7 +320,7 @@ int ncgparse (); /* Copy the second part of user declarations. */ /* Line 377 of yacc.c */ -#line 323 "ncgen.tab.c" +#line 324 "ncgen.tab.c" #ifdef short # undef short @@ -539,20 +540,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 372 +#define YYLAST 376 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 59 +#define YYNTOKENS 60 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 65 /* YYNRULES -- Number of rules. */ -#define YYNRULES 147 +#define YYNRULES 148 /* YYNRULES -- Number of states. */ -#define YYNSTATES 248 +#define YYNSTATES 249 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 304 +#define YYMAXUTOK 305 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -564,15 +565,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 55, 56, 57, 2, 53, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 58, 52, - 2, 54, 2, 2, 2, 2, 2, 2, 2, 2, + 56, 57, 58, 2, 54, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 59, 53, + 2, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 50, 2, 51, 2, 2, 2, 2, + 2, 2, 2, 51, 2, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -590,7 +591,7 @@ static const yytype_uint8 yytranslate[] = 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, 46, 47, 48, 49 + 45, 46, 47, 48, 49, 50 }; #if YYDEBUG @@ -610,78 +611,78 @@ static const yytype_uint16 yyprhs[] = 254, 259, 266, 272, 278, 285, 291, 297, 303, 309, 315, 321, 327, 332, 334, 336, 337, 339, 342, 345, 349, 353, 355, 357, 358, 360, 364, 366, 370, 372, - 374, 376, 378, 380, 385, 387, 391, 393, 395, 397, + 374, 376, 378, 380, 382, 387, 389, 393, 395, 397, 399, 401, 403, 405, 407, 409, 411, 413, 415, 417, - 421, 423, 425, 427, 429, 431, 433, 435 + 419, 423, 425, 427, 429, 431, 433, 435, 437 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 60, 0, -1, 30, 49, 61, -1, 50, 62, 63, - 51, -1, 105, 67, 82, 88, 108, -1, -1, 63, - 64, -1, -1, -1, 37, 123, 50, 65, 62, 63, - 66, 51, 105, -1, -1, 32, -1, 32, 68, -1, - 70, -1, 68, 70, -1, 123, -1, 71, -1, 106, - 52, -1, 73, 72, -1, 78, 72, -1, 77, 72, - -1, 76, 72, -1, -1, 52, -1, 81, 34, 69, - 50, 74, 51, -1, 75, -1, 74, 53, 75, -1, - 123, 54, 115, -1, 35, 55, 20, 56, 69, -1, - 103, 55, 57, 56, 69, -1, 33, 69, 50, 79, - 51, -1, 80, 52, -1, 79, 80, 52, -1, 103, - 97, -1, 4, -1, 5, -1, 6, -1, 7, -1, + 61, 0, -1, 30, 50, 62, -1, 51, 63, 64, + 52, -1, 106, 68, 83, 89, 109, -1, -1, 64, + 65, -1, -1, -1, 37, 124, 51, 66, 63, 64, + 67, 52, 106, -1, -1, 32, -1, 32, 69, -1, + 71, -1, 69, 71, -1, 124, -1, 72, -1, 107, + 53, -1, 74, 73, -1, 79, 73, -1, 78, 73, + -1, 77, 73, -1, -1, 53, -1, 82, 34, 70, + 51, 75, 52, -1, 76, -1, 75, 54, 76, -1, + 124, 55, 116, -1, 35, 56, 20, 57, 70, -1, + 104, 56, 58, 57, 70, -1, 33, 70, 51, 80, + 52, -1, 81, 53, -1, 80, 81, 53, -1, 104, + 98, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, 10, -1, 11, -1, 12, -1, - 13, -1, 14, -1, -1, 28, -1, 28, 83, -1, - 84, 52, -1, 83, 84, 52, -1, 85, -1, 106, - -1, 86, -1, 85, 53, 86, -1, 87, 54, 24, - -1, 87, 54, 20, -1, 87, 54, 27, -1, 87, - 54, 3, -1, 123, -1, -1, 29, -1, 29, 89, - -1, 90, 52, -1, 89, 90, 52, -1, 91, -1, - 106, -1, 103, 92, -1, 93, -1, 92, 53, 93, - -1, 123, 94, -1, -1, 55, 95, 56, -1, 96, - -1, 95, 53, 96, -1, 107, -1, 98, -1, 97, - 53, 98, -1, 123, 99, -1, -1, 55, 100, 56, - -1, 101, -1, 100, 53, 101, -1, 24, -1, 20, - -1, 104, -1, 104, -1, 107, -1, 81, -1, -1, - 106, 52, 105, -1, 58, 123, 54, 111, -1, 103, - 104, 58, 123, 54, 111, -1, 104, 58, 123, 54, - 111, -1, 104, 58, 40, 54, 111, -1, 103, 104, - 58, 40, 54, 111, -1, 104, 58, 42, 54, 121, - -1, 104, 58, 43, 54, 119, -1, 104, 58, 48, - 54, 122, -1, 104, 58, 44, 54, 120, -1, 104, - 58, 45, 54, 122, -1, 104, 58, 46, 54, 121, - -1, 104, 58, 47, 54, 122, -1, 58, 41, 54, - 121, -1, 123, -1, 38, -1, -1, 31, -1, 31, - 109, -1, 110, 52, -1, 109, 110, 52, -1, 102, - 54, 111, -1, 112, -1, 113, -1, -1, 114, -1, - 111, 53, 114, -1, 115, -1, 50, 111, 51, -1, - 118, -1, 36, -1, 39, -1, 107, -1, 116, -1, - 123, 55, 117, 56, -1, 118, -1, 117, 53, 118, - -1, 17, -1, 18, -1, 19, -1, 20, -1, 21, - -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, - -1, 27, -1, 16, -1, 120, -1, 119, 53, 120, - -1, 20, -1, 24, -1, 21, -1, 25, -1, 16, - -1, 121, -1, 120, -1, 15, -1 + 13, -1, 14, -1, -1, 28, -1, 28, 84, -1, + 85, 53, -1, 84, 85, 53, -1, 86, -1, 107, + -1, 87, -1, 86, 54, 87, -1, 88, 55, 24, + -1, 88, 55, 20, -1, 88, 55, 27, -1, 88, + 55, 3, -1, 124, -1, -1, 29, -1, 29, 90, + -1, 91, 53, -1, 90, 91, 53, -1, 92, -1, + 107, -1, 104, 93, -1, 94, -1, 93, 54, 94, + -1, 124, 95, -1, -1, 56, 96, 57, -1, 97, + -1, 96, 54, 97, -1, 108, -1, 99, -1, 98, + 54, 99, -1, 124, 100, -1, -1, 56, 101, 57, + -1, 102, -1, 101, 54, 102, -1, 24, -1, 20, + -1, 105, -1, 105, -1, 108, -1, 82, -1, -1, + 107, 53, 106, -1, 59, 124, 55, 112, -1, 104, + 105, 59, 124, 55, 112, -1, 105, 59, 124, 55, + 112, -1, 105, 59, 41, 55, 112, -1, 104, 105, + 59, 41, 55, 112, -1, 105, 59, 43, 55, 122, + -1, 105, 59, 44, 55, 120, -1, 105, 59, 49, + 55, 123, -1, 105, 59, 45, 55, 121, -1, 105, + 59, 46, 55, 123, -1, 105, 59, 47, 55, 122, + -1, 105, 59, 48, 55, 123, -1, 59, 42, 55, + 122, -1, 124, -1, 38, -1, -1, 31, -1, 31, + 110, -1, 111, 53, -1, 110, 111, 53, -1, 103, + 55, 112, -1, 113, -1, 114, -1, -1, 115, -1, + 112, 54, 115, -1, 116, -1, 51, 112, 52, -1, + 119, -1, 36, -1, 39, -1, 40, -1, 108, -1, + 117, -1, 124, 56, 118, 57, -1, 119, -1, 118, + 54, 119, -1, 17, -1, 18, -1, 19, -1, 20, + -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, + -1, 26, -1, 27, -1, 16, -1, 121, -1, 120, + 54, 121, -1, 20, -1, 24, -1, 21, -1, 25, + -1, 16, -1, 122, -1, 121, -1, 15, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 207, 207, 213, 220, 227, 227, 230, 239, 229, - 244, 245, 246, 250, 250, 252, 262, 262, 265, 266, - 267, 268, 271, 271, 274, 304, 306, 323, 332, 344, - 358, 391, 392, 395, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 422, 423, 424, 427, 428, - 431, 431, 433, 434, 438, 445, 456, 469, 479, 491, - 492, 493, 496, 497, 500, 500, 502, 524, 528, 532, - 559, 560, 563, 564, 568, 582, 586, 591, 620, 621, - 625, 626, 631, 641, 661, 672, 683, 702, 709, 709, - 712, 714, 723, 734, 736, 738, 740, 742, 744, 746, - 748, 750, 752, 757, 763, 772, 773, 774, 777, 778, - 781, 785, 786, 790, 794, 795, 800, 801, 805, 806, - 807, 808, 809, 813, 817, 819, 824, 825, 826, 827, - 828, 829, 830, 831, 832, 833, 834, 835, 839, 840, - 844, 846, 848, 850, 855, 859, 860, 866 + 0, 208, 208, 214, 221, 228, 228, 231, 240, 230, + 245, 246, 247, 251, 251, 253, 263, 263, 266, 267, + 268, 269, 272, 272, 275, 305, 307, 324, 333, 345, + 359, 392, 393, 396, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 423, 424, 425, 428, 429, + 432, 432, 434, 435, 439, 446, 457, 470, 480, 492, + 493, 494, 497, 498, 501, 501, 503, 525, 529, 533, + 560, 561, 564, 565, 569, 583, 587, 592, 621, 622, + 626, 627, 632, 642, 662, 673, 684, 703, 710, 710, + 713, 715, 724, 735, 737, 739, 741, 743, 745, 747, + 749, 751, 753, 758, 764, 773, 774, 775, 778, 779, + 782, 786, 787, 791, 795, 796, 801, 802, 806, 807, + 808, 809, 810, 811, 815, 819, 821, 826, 827, 828, + 829, 830, 831, 832, 833, 834, 835, 836, 837, 841, + 842, 846, 848, 850, 852, 857, 861, 862, 868 }; #endif @@ -697,7 +698,7 @@ static const char *const yytname[] = "USHORT_CONST", "UINT_CONST", "UINT64_CONST", "FLOAT_CONST", "DOUBLE_CONST", "DIMENSIONS", "VARIABLES", "NETCDF", "DATA", "TYPES", "COMPOUND", "ENUM", "OPAQUE", "OPAQUESTRING", "GROUP", "PATH", - "FILLMARKER", "_FILLVALUE", "_FORMAT", "_STORAGE", "_CHUNKSIZES", + "FILLMARKER", "NIL", "_FILLVALUE", "_FORMAT", "_STORAGE", "_CHUNKSIZES", "_DEFLATELEVEL", "_SHUFFLE", "_ENDIANNESS", "_NOFILL", "_FLETCHER32", "DATASETID", "'{'", "'}'", "';'", "','", "'='", "'('", "')'", "'*'", "':'", "$accept", "ncdesc", "rootgroup", "groupbody", "subgrouplist", @@ -726,28 +727,28 @@ static const yytype_uint16 yytoknum[] = 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 123, 125, 59, 44, 61, 40, 41, 42, 58 + 305, 123, 125, 59, 44, 61, 40, 41, 42, 58 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 59, 60, 61, 62, 63, 63, 65, 66, 64, - 67, 67, 67, 68, 68, 69, 70, 70, 71, 71, - 71, 71, 72, 72, 73, 74, 74, 75, 76, 77, - 78, 79, 79, 80, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 82, 82, 82, 83, 83, - 84, 84, 85, 85, 86, 86, 86, 86, 87, 88, - 88, 88, 89, 89, 90, 90, 91, 92, 92, 93, - 94, 94, 95, 95, 96, 97, 97, 98, 99, 99, - 100, 100, 101, 101, 102, 103, 104, 104, 105, 105, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 107, 107, 108, 108, 108, 109, 109, - 110, 111, 111, 112, 113, 113, 114, 114, 115, 115, - 115, 115, 115, 116, 117, 117, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 119, 119, - 120, 120, 120, 120, 121, 122, 122, 123 + 0, 60, 61, 62, 63, 64, 64, 66, 67, 65, + 68, 68, 68, 69, 69, 70, 71, 71, 72, 72, + 72, 72, 73, 73, 74, 75, 75, 76, 77, 78, + 79, 80, 80, 81, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 83, 83, 83, 84, 84, + 85, 85, 86, 86, 87, 87, 87, 87, 88, 89, + 89, 89, 90, 90, 91, 91, 92, 93, 93, 94, + 95, 95, 96, 96, 97, 98, 98, 99, 100, 100, + 101, 101, 102, 102, 103, 104, 105, 105, 106, 106, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 108, 108, 109, 109, 109, 110, 110, + 111, 112, 112, 113, 114, 114, 115, 115, 116, 116, + 116, 116, 116, 116, 117, 118, 118, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, + 120, 121, 121, 121, 121, 122, 123, 123, 124 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -765,9 +766,9 @@ static const yytype_uint8 yyr2[] = 4, 6, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 4, 1, 1, 0, 1, 2, 2, 3, 3, 1, 1, 0, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 4, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 4, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -776,86 +777,86 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 0, 0, 0, 0, 1, 88, 2, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 147, 104, + 37, 38, 39, 40, 41, 42, 43, 44, 148, 104, 0, 5, 87, 0, 85, 10, 0, 86, 103, 0, 0, 0, 0, 0, 11, 45, 88, 0, 113, 0, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 16, 22, 22, 22, - 22, 87, 0, 0, 46, 59, 89, 144, 102, 137, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 119, 120, 113, 121, 90, 111, 112, 114, 116, - 122, 118, 103, 0, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 113, 0, 15, 0, 14, 23, - 18, 21, 20, 19, 0, 0, 17, 47, 0, 50, - 52, 0, 51, 103, 60, 105, 0, 0, 0, 7, - 113, 113, 93, 95, 140, 142, 141, 143, 96, 138, - 98, 146, 145, 99, 100, 101, 97, 92, 0, 0, - 0, 0, 0, 48, 0, 0, 61, 0, 64, 0, - 65, 106, 4, 117, 115, 0, 124, 88, 94, 91, - 0, 0, 0, 0, 85, 0, 0, 0, 49, 53, - 58, 57, 55, 54, 56, 0, 62, 66, 67, 70, - 0, 84, 107, 0, 0, 123, 5, 139, 30, 0, - 31, 33, 75, 78, 28, 0, 25, 0, 29, 63, - 0, 0, 69, 113, 0, 108, 125, 8, 32, 0, - 0, 77, 24, 0, 0, 68, 70, 0, 72, 74, - 110, 109, 0, 76, 83, 82, 0, 80, 26, 27, - 0, 71, 88, 0, 79, 73, 9, 81 + 22, 87, 0, 0, 46, 59, 89, 145, 102, 138, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 119, 120, 121, 113, 122, 90, 111, 112, 114, + 116, 123, 118, 103, 0, 0, 0, 113, 0, 0, + 0, 0, 0, 0, 0, 113, 0, 15, 0, 14, + 23, 18, 21, 20, 19, 0, 0, 17, 47, 0, + 50, 52, 0, 51, 103, 60, 105, 0, 0, 0, + 7, 113, 113, 93, 95, 141, 143, 142, 144, 96, + 139, 98, 147, 146, 99, 100, 101, 97, 92, 0, + 0, 0, 0, 0, 48, 0, 0, 61, 0, 64, + 0, 65, 106, 4, 117, 115, 0, 125, 88, 94, + 91, 0, 0, 0, 0, 85, 0, 0, 0, 49, + 53, 58, 57, 55, 54, 56, 0, 62, 66, 67, + 70, 0, 84, 107, 0, 0, 124, 5, 140, 30, + 0, 31, 33, 75, 78, 28, 0, 25, 0, 29, + 63, 0, 0, 69, 113, 0, 108, 126, 8, 32, + 0, 0, 77, 24, 0, 0, 68, 70, 0, 72, + 74, 110, 109, 0, 76, 83, 82, 0, 80, 26, + 27, 0, 71, 88, 0, 79, 73, 9, 81 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 6, 21, 31, 41, 167, 232, 35, 54, - 105, 55, 56, 110, 57, 205, 206, 58, 59, 60, - 171, 172, 22, 65, 117, 118, 119, 120, 121, 125, - 156, 157, 158, 187, 188, 212, 227, 228, 201, 202, - 221, 236, 237, 190, 23, 24, 25, 26, 27, 162, - 192, 193, 85, 86, 87, 88, 89, 90, 165, 91, - 138, 141, 142, 143, 28 + -1, 2, 6, 21, 31, 41, 168, 233, 35, 54, + 106, 55, 56, 111, 57, 206, 207, 58, 59, 60, + 172, 173, 22, 65, 118, 119, 120, 121, 122, 126, + 157, 158, 159, 188, 189, 213, 228, 229, 202, 203, + 222, 237, 238, 191, 23, 24, 25, 26, 27, 163, + 193, 194, 86, 87, 88, 89, 90, 91, 166, 92, + 139, 142, 143, 144, 28 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -127 +#define YYPACT_NINF -128 static const yytype_int16 yypact[] = { - -8, -22, 40, -15, -127, 206, -127, -127, -127, -127, - -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, - -2, -127, -127, 320, -14, 29, 14, -127, -127, 36, - 37, -5, 25, 131, 109, 61, 206, 76, 273, 78, - -127, -127, -10, 43, 48, 49, 51, 52, 53, 55, - 56, 73, 78, 74, 109, -127, -127, 79, 79, 79, - 79, 70, 218, 80, 206, 101, -127, -127, -127, -127, - -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, - -127, -127, -127, 273, -127, 81, -127, -127, -127, -127, - -127, -127, 82, 86, 89, 91, 273, 76, 50, 50, - 33, 76, 33, 33, 273, 99, -127, 130, -127, -127, - -127, -127, -127, -127, 78, 95, -127, 206, 103, 100, - -127, 105, -127, 106, 206, 132, 31, 273, 345, -127, - 273, 273, 81, -127, -127, -127, -127, -127, 108, -127, - -127, -127, -127, -127, -127, -127, -127, 81, 320, 110, - 112, 113, 116, -127, 78, 23, 206, 118, -127, 320, - -127, 320, -127, -127, -127, -28, -127, 206, 81, 81, - 50, 270, 129, 78, -127, 78, 78, 78, -127, -127, - -127, -127, -127, -127, -127, 133, -127, 111, -127, -7, - 134, -127, 320, 135, 345, -127, -127, -127, -127, 137, - -127, 139, -127, 128, -127, 35, -127, 136, -127, -127, - 78, 0, -127, 273, 143, -127, -127, 147, -127, 78, - 17, -127, -127, 78, 321, -127, 141, 6, -127, -127, - 81, -127, 114, -127, -127, -127, 7, -127, -127, -127, - 0, -127, 206, 17, -127, -127, -127, -127 + -5, -12, 57, 12, -128, 207, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -3, -128, -128, 323, 14, 37, 26, -128, -128, 27, + 28, -9, 32, 3, 110, 59, 207, 82, 275, 77, + -128, -128, 0, 52, 55, 56, 78, 80, 84, 89, + 91, 92, 77, 75, 110, -128, -128, 79, 79, 79, + 79, 103, 219, 97, 207, 122, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, 275, -128, 99, -128, -128, -128, + -128, -128, -128, 98, 105, 106, 107, 275, 82, 69, + 69, 60, 82, 60, 60, 275, 109, -128, 143, -128, + -128, -128, -128, -128, -128, 77, 108, -128, 207, 111, + 113, -128, 115, -128, 116, 207, 134, 54, 275, 349, + -128, 275, 275, 99, -128, -128, -128, -128, -128, 114, + -128, -128, -128, -128, -128, -128, -128, -128, 99, 323, + 117, 121, 118, 123, -128, 77, 34, 207, 124, -128, + 323, -128, 323, -128, -128, -128, -22, -128, 207, 99, + 99, 69, 272, 125, 77, -128, 77, 77, 77, -128, + -128, -128, -128, -128, -128, -128, 126, -128, 128, -128, + -29, 129, -128, 323, 127, 349, -128, -128, -128, -128, + 132, -128, 133, -128, 130, -128, 76, -128, 135, -128, + -128, 77, -2, -128, 275, 136, -128, -128, 151, -128, + 77, 2, -128, -128, 77, 324, -128, 137, 5, -128, + -128, 99, -128, 139, -128, -128, -128, 10, -128, -128, + -128, -2, -128, 207, 2, -128, -128, -128, -128 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -127, -127, -127, 19, 1, -127, -127, -127, -127, -127, - -108, 144, -127, 20, -127, -127, -24, -127, -127, -127, - -127, 30, -18, -127, -127, 85, -127, 54, -127, -127, - -127, 47, -127, -127, -3, -127, -127, -6, -127, 16, - -127, -127, -4, -127, -23, -20, -36, -30, -31, -127, - -127, 44, -75, -127, -127, 115, 13, -127, -127, -126, - -127, -89, -25, -85, -19 + -128, -128, -128, 29, -1, -128, -128, -128, -128, -128, + -106, 144, -128, 45, -128, -128, -25, -128, -128, -128, + -128, 30, 6, -128, -128, 85, -128, 49, -128, -128, + -128, 43, -128, -128, 24, -128, -128, -33, -128, -11, + -128, -128, -8, -128, -23, -20, -36, -30, -31, -128, + -128, 44, -76, -128, -128, 112, 13, -128, -128, -127, + -128, -94, -27, -87, -19 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -864,123 +865,123 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -104 static const yytype_int16 yytable[] = { - 66, 30, 166, 32, 63, 18, 150, 84, 126, 139, - 140, 62, 68, 18, 51, 18, 61, 145, 146, 92, - 93, 132, 1, 95, 63, 194, 181, 3, 195, 147, - 94, 62, 39, 106, 122, 5, 61, 234, 19, 29, - 4, 235, 32, 182, 33, 123, 40, 183, 211, 67, - 184, -103, 84, 134, 135, 168, 169, 136, 137, 240, - 243, 34, 241, 244, 92, 84, 36, 204, 216, 208, - 134, 135, 133, 84, 136, 137, 144, 92, 111, 112, - 113, 197, 163, 42, 127, 92, 222, 122, 223, 64, - 37, 38, 67, 18, 160, 106, 84, 96, 123, 84, - 84, 159, 97, 98, 114, 99, 100, 101, 92, 102, - 103, 92, 92, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 173, 160, 104, 174, 107, - 124, 109, 116, 159, 127, 180, 129, 128, 230, 32, - 189, 191, 52, 130, 53, 131, 18, 19, 173, 148, - 149, 174, 151, 154, 203, 153, 106, 207, 106, 155, - -58, 170, 176, 161, 210, 242, 175, 20, 178, 177, - 186, 43, 191, 44, 45, 46, 47, 48, 49, 50, - 229, 200, 84, 220, 39, 209, 196, 215, 213, 218, - 224, 226, 219, 84, 92, 231, 211, 217, 108, 238, - 203, 199, 152, 185, 207, 92, 246, 225, 179, 229, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 245, 233, 214, 239, 0, 247, - 0, 0, 164, 0, 19, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, - 0, 0, 0, 115, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 0, 0, 18, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 0, 0, 0, 0, 0, 0, 0, 19, 81, - 0, 19, 82, 0, 0, 0, 0, 0, 0, 0, - 0, 198, 0, 83, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 18, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 19, 19, - 82, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80 + 66, 30, 167, 32, 63, 140, 141, 85, 127, 151, + 68, 62, 18, 18, 51, 18, 146, 147, 18, 93, + 94, 133, 235, 96, 63, 1, 236, 212, 39, 148, + -103, 62, 195, 107, 123, 196, 19, 182, 3, 29, + 61, 95, 32, 40, 43, 124, 44, 45, 46, 47, + 48, 49, 50, 85, 183, 169, 170, 4, 184, 241, + 61, 185, 242, 5, 244, 93, 85, 245, 217, 34, + 205, 134, 209, 33, 85, 145, 67, 198, 93, 36, + 135, 136, 37, 38, 137, 138, 93, 64, 123, 135, + 136, 42, 18, 137, 138, 161, 107, 85, 67, 124, + 85, 85, 160, 112, 113, 114, 164, 97, 128, 93, + 98, 99, 93, 93, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 174, 161, 223, 175, + 224, 108, 110, 100, 160, 101, 181, 115, 231, 102, + 32, 190, 192, 52, 103, 53, 104, 105, 19, 174, + 117, 125, 175, 128, 129, 204, 130, 107, 208, 107, + 149, 131, 132, 150, 154, 162, 152, 155, 171, 20, + 156, -58, 177, 192, 176, 178, 179, 187, 201, 210, + 216, 230, 211, 85, 214, 219, 221, 220, 39, 232, + 225, 243, 227, 212, 85, 93, 218, 197, 109, 239, + 186, 204, 200, 153, 180, 208, 93, 247, 246, 234, + 230, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 226, 248, 215, 240, 0, + 165, 0, 0, 0, 0, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, + 18, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, + 19, 81, 0, 19, 82, 83, 0, 0, 0, 0, + 0, 0, 0, 0, 199, 0, 84, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 19, 19, 82, 83, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80 }; #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-127))) + (!!((Yystate) == (-128))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 36, 20, 128, 23, 34, 15, 114, 38, 83, 98, - 99, 34, 37, 15, 33, 15, 34, 102, 103, 38, - 39, 96, 30, 42, 54, 53, 3, 49, 56, 104, - 40, 54, 37, 52, 64, 50, 54, 20, 38, 41, - 0, 24, 62, 20, 58, 64, 51, 24, 55, 16, - 27, 58, 83, 20, 21, 130, 131, 24, 25, 53, - 53, 32, 56, 56, 83, 96, 52, 175, 194, 177, - 20, 21, 97, 104, 24, 25, 101, 96, 58, 59, - 60, 170, 51, 58, 53, 104, 51, 117, 53, 28, - 54, 54, 16, 15, 124, 114, 127, 54, 117, 130, - 131, 124, 54, 54, 34, 54, 54, 54, 127, 54, - 54, 130, 131, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 148, 156, 54, 148, 55, - 29, 52, 52, 156, 53, 154, 50, 55, 213, 159, - 159, 161, 33, 54, 35, 54, 15, 38, 171, 50, - 20, 171, 57, 53, 173, 52, 175, 176, 177, 54, - 54, 53, 50, 31, 53, 51, 56, 58, 52, 56, - 52, 40, 192, 42, 43, 44, 45, 46, 47, 48, - 211, 52, 213, 55, 37, 52, 167, 52, 54, 52, - 54, 210, 53, 224, 213, 52, 55, 196, 54, 223, - 219, 171, 117, 156, 223, 224, 242, 210, 154, 240, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 240, 219, 192, 224, -1, 243, - -1, -1, 127, -1, 38, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, - -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, - -1, -1, -1, 55, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, -1, -1, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, -1, -1, -1, -1, -1, -1, -1, 38, 36, - -1, 38, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 51, -1, 50, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, - -1, -1, -1, -1, -1, -1, -1, 36, 38, 38, - 39, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27 + 36, 20, 129, 23, 34, 99, 100, 38, 84, 115, + 37, 34, 15, 15, 33, 15, 103, 104, 15, 38, + 39, 97, 20, 42, 54, 30, 24, 56, 37, 105, + 59, 54, 54, 52, 64, 57, 38, 3, 50, 42, + 34, 41, 62, 52, 41, 64, 43, 44, 45, 46, + 47, 48, 49, 84, 20, 131, 132, 0, 24, 54, + 54, 27, 57, 51, 54, 84, 97, 57, 195, 32, + 176, 98, 178, 59, 105, 102, 16, 171, 97, 53, + 20, 21, 55, 55, 24, 25, 105, 28, 118, 20, + 21, 59, 15, 24, 25, 125, 115, 128, 16, 118, + 131, 132, 125, 58, 59, 60, 52, 55, 54, 128, + 55, 55, 131, 132, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 149, 157, 52, 149, + 54, 56, 53, 55, 157, 55, 155, 34, 214, 55, + 160, 160, 162, 33, 55, 35, 55, 55, 38, 172, + 53, 29, 172, 54, 56, 174, 51, 176, 177, 178, + 51, 55, 55, 20, 53, 31, 58, 54, 54, 59, + 55, 55, 51, 193, 57, 57, 53, 53, 53, 53, + 53, 212, 54, 214, 55, 53, 56, 54, 37, 53, + 55, 52, 211, 56, 225, 214, 197, 168, 54, 224, + 157, 220, 172, 118, 155, 224, 225, 243, 241, 220, + 241, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 211, 244, 193, 225, -1, + 128, -1, -1, -1, -1, 38, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, + -1, -1, -1, -1, -1, 56, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, -1, -1, -1, -1, -1, -1, -1, + 38, 36, -1, 38, 39, 40, -1, -1, -1, -1, + -1, -1, -1, -1, 52, -1, 51, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, -1, -1, -1, -1, -1, -1, -1, -1, + 36, 38, 38, 39, 40, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 30, 60, 49, 0, 50, 61, 4, 5, 6, + 0, 30, 61, 50, 0, 51, 62, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 38, - 58, 62, 81, 103, 104, 105, 106, 107, 123, 41, - 123, 63, 104, 58, 32, 67, 52, 54, 54, 37, - 51, 64, 58, 40, 42, 43, 44, 45, 46, 47, - 48, 123, 33, 35, 68, 70, 71, 73, 76, 77, - 78, 81, 103, 106, 28, 82, 105, 16, 121, 16, + 59, 63, 82, 104, 105, 106, 107, 108, 124, 42, + 124, 64, 105, 59, 32, 68, 53, 55, 55, 37, + 52, 65, 59, 41, 43, 44, 45, 46, 47, 48, + 49, 124, 33, 35, 69, 71, 72, 74, 77, 78, + 79, 82, 104, 107, 28, 83, 106, 16, 122, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 36, 39, 50, 107, 111, 112, 113, 114, 115, - 116, 118, 123, 123, 40, 123, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 69, 123, 55, 70, 52, - 72, 72, 72, 72, 34, 55, 52, 83, 84, 85, - 86, 87, 106, 123, 29, 88, 111, 53, 55, 50, - 54, 54, 111, 121, 20, 21, 24, 25, 119, 120, - 120, 120, 121, 122, 121, 122, 122, 111, 50, 20, - 69, 57, 84, 52, 53, 54, 89, 90, 91, 103, - 106, 31, 108, 51, 114, 117, 118, 65, 111, 111, - 53, 79, 80, 103, 104, 56, 50, 56, 52, 86, - 123, 3, 20, 24, 27, 90, 52, 92, 93, 123, - 102, 104, 109, 110, 53, 56, 62, 120, 51, 80, - 52, 97, 98, 123, 69, 74, 75, 123, 69, 52, - 53, 55, 94, 54, 110, 52, 118, 63, 52, 53, - 55, 99, 51, 53, 54, 93, 123, 95, 96, 107, - 111, 52, 66, 98, 20, 24, 100, 101, 75, 115, - 53, 56, 51, 53, 56, 96, 105, 101 + 27, 36, 39, 40, 51, 108, 112, 113, 114, 115, + 116, 117, 119, 124, 124, 41, 124, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 70, 124, 56, 71, + 53, 73, 73, 73, 73, 34, 56, 53, 84, 85, + 86, 87, 88, 107, 124, 29, 89, 112, 54, 56, + 51, 55, 55, 112, 122, 20, 21, 24, 25, 120, + 121, 121, 121, 122, 123, 122, 123, 123, 112, 51, + 20, 70, 58, 85, 53, 54, 55, 90, 91, 92, + 104, 107, 31, 109, 52, 115, 118, 119, 66, 112, + 112, 54, 80, 81, 104, 105, 57, 51, 57, 53, + 87, 124, 3, 20, 24, 27, 91, 53, 93, 94, + 124, 103, 105, 110, 111, 54, 57, 63, 121, 52, + 81, 53, 98, 99, 124, 70, 75, 76, 124, 70, + 53, 54, 56, 95, 55, 111, 53, 119, 64, 53, + 54, 56, 100, 52, 54, 55, 94, 124, 96, 97, + 108, 112, 53, 67, 99, 20, 24, 101, 102, 76, + 116, 54, 57, 52, 54, 57, 97, 106, 102 }; #define yyerrok (yyerrstatus = 0) @@ -1817,13 +1818,13 @@ yyreduce: { case 2: /* Line 1813 of yacc.c */ -#line 210 "ncgen.y" +#line 211 "ncgen.y" {if (error_count > 0) YYABORT;} break; case 7: /* Line 1813 of yacc.c */ -#line 230 "ncgen.y" +#line 231 "ncgen.y" { Symbol* id = (yyvsp[(2) - (3)].sym); markcdf4("Group specification"); @@ -1835,25 +1836,25 @@ yyreduce: case 8: /* Line 1813 of yacc.c */ -#line 239 "ncgen.y" +#line 240 "ncgen.y" {listpop(groupstack);} break; case 11: /* Line 1813 of yacc.c */ -#line 245 "ncgen.y" +#line 246 "ncgen.y" {} break; case 12: /* Line 1813 of yacc.c */ -#line 247 "ncgen.y" +#line 248 "ncgen.y" {markcdf4("Type specification");} break; case 15: /* Line 1813 of yacc.c */ -#line 253 "ncgen.y" +#line 254 "ncgen.y" { /* Use when defining a type */ (yyvsp[(1) - (1)].sym)->objectclass = NC_TYPE; if(dupobjectcheck(NC_TYPE,(yyvsp[(1) - (1)].sym))) @@ -1865,19 +1866,19 @@ yyreduce: case 16: /* Line 1813 of yacc.c */ -#line 262 "ncgen.y" +#line 263 "ncgen.y" {} break; case 17: /* Line 1813 of yacc.c */ -#line 262 "ncgen.y" +#line 263 "ncgen.y" {} break; case 24: /* Line 1813 of yacc.c */ -#line 276 "ncgen.y" +#line 277 "ncgen.y" { int i; addtogroup((yyvsp[(3) - (6)].sym)); /* sets prefix*/ @@ -1908,13 +1909,13 @@ yyreduce: case 25: /* Line 1813 of yacc.c */ -#line 305 "ncgen.y" +#line 306 "ncgen.y" {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym));} break; case 26: /* Line 1813 of yacc.c */ -#line 307 "ncgen.y" +#line 308 "ncgen.y" { int i; (yyval.mark)=(yyvsp[(1) - (3)].mark); @@ -1933,7 +1934,7 @@ yyreduce: case 27: /* Line 1813 of yacc.c */ -#line 324 "ncgen.y" +#line 325 "ncgen.y" { (yyvsp[(1) - (3)].sym)->objectclass=NC_TYPE; (yyvsp[(1) - (3)].sym)->subclass=NC_ECONST; @@ -1944,7 +1945,7 @@ yyreduce: case 28: /* Line 1813 of yacc.c */ -#line 333 "ncgen.y" +#line 334 "ncgen.y" { vercheck(NC_OPAQUE); addtogroup((yyvsp[(5) - (5)].sym)); /*sets prefix*/ @@ -1958,7 +1959,7 @@ yyreduce: case 29: /* Line 1813 of yacc.c */ -#line 345 "ncgen.y" +#line 346 "ncgen.y" { Symbol* basetype = (yyvsp[(1) - (5)].sym); vercheck(NC_VLEN); @@ -1974,7 +1975,7 @@ yyreduce: case 30: /* Line 1813 of yacc.c */ -#line 359 "ncgen.y" +#line 360 "ncgen.y" { int i,j; vercheck(NC_COMPOUND); @@ -2008,19 +2009,19 @@ yyreduce: case 31: /* Line 1813 of yacc.c */ -#line 391 "ncgen.y" +#line 392 "ncgen.y" {(yyval.mark)=(yyvsp[(1) - (2)].mark);} break; case 32: /* Line 1813 of yacc.c */ -#line 392 "ncgen.y" +#line 393 "ncgen.y" {(yyval.mark)=(yyvsp[(1) - (3)].mark);} break; case 33: /* Line 1813 of yacc.c */ -#line 396 "ncgen.y" +#line 397 "ncgen.y" { int i; (yyval.mark)=(yyvsp[(2) - (2)].mark); @@ -2036,97 +2037,97 @@ yyreduce: case 34: /* Line 1813 of yacc.c */ -#line 409 "ncgen.y" +#line 410 "ncgen.y" { (yyval.sym) = primsymbols[NC_CHAR]; } break; case 35: /* Line 1813 of yacc.c */ -#line 410 "ncgen.y" +#line 411 "ncgen.y" { (yyval.sym) = primsymbols[NC_BYTE]; } break; case 36: /* Line 1813 of yacc.c */ -#line 411 "ncgen.y" +#line 412 "ncgen.y" { (yyval.sym) = primsymbols[NC_SHORT]; } break; case 37: /* Line 1813 of yacc.c */ -#line 412 "ncgen.y" +#line 413 "ncgen.y" { (yyval.sym) = primsymbols[NC_INT]; } break; case 38: /* Line 1813 of yacc.c */ -#line 413 "ncgen.y" +#line 414 "ncgen.y" { (yyval.sym) = primsymbols[NC_FLOAT]; } break; case 39: /* Line 1813 of yacc.c */ -#line 414 "ncgen.y" +#line 415 "ncgen.y" { (yyval.sym) = primsymbols[NC_DOUBLE]; } break; case 40: /* Line 1813 of yacc.c */ -#line 415 "ncgen.y" +#line 416 "ncgen.y" { vercheck(NC_UBYTE); (yyval.sym) = primsymbols[NC_UBYTE]; } break; case 41: /* Line 1813 of yacc.c */ -#line 416 "ncgen.y" +#line 417 "ncgen.y" { vercheck(NC_USHORT); (yyval.sym) = primsymbols[NC_USHORT]; } break; case 42: /* Line 1813 of yacc.c */ -#line 417 "ncgen.y" +#line 418 "ncgen.y" { vercheck(NC_UINT); (yyval.sym) = primsymbols[NC_UINT]; } break; case 43: /* Line 1813 of yacc.c */ -#line 418 "ncgen.y" +#line 419 "ncgen.y" { vercheck(NC_INT64); (yyval.sym) = primsymbols[NC_INT64]; } break; case 44: /* Line 1813 of yacc.c */ -#line 419 "ncgen.y" +#line 420 "ncgen.y" { vercheck(NC_UINT64); (yyval.sym) = primsymbols[NC_UINT64]; } break; case 46: /* Line 1813 of yacc.c */ -#line 423 "ncgen.y" +#line 424 "ncgen.y" {} break; case 47: /* Line 1813 of yacc.c */ -#line 424 "ncgen.y" +#line 425 "ncgen.y" {} break; case 50: /* Line 1813 of yacc.c */ -#line 431 "ncgen.y" +#line 432 "ncgen.y" {} break; case 51: /* Line 1813 of yacc.c */ -#line 431 "ncgen.y" +#line 432 "ncgen.y" {} break; case 54: /* Line 1813 of yacc.c */ -#line 439 "ncgen.y" +#line 440 "ncgen.y" { (yyvsp[(1) - (3)].sym)->dim.declsize = (size_t)uint32_val; #ifdef DEBUG1 @@ -2137,7 +2138,7 @@ fprintf(stderr,"dimension: %s = %lu\n",(yyvsp[(1) - (3)].sym)->name,(unsigned lo case 55: /* Line 1813 of yacc.c */ -#line 446 "ncgen.y" +#line 447 "ncgen.y" { if(int32_val <= 0) { derror("dimension size must be positive"); @@ -2152,7 +2153,7 @@ fprintf(stderr,"dimension: %s = %lu\n",(yyvsp[(1) - (3)].sym)->name,(unsigned lo case 56: /* Line 1813 of yacc.c */ -#line 457 "ncgen.y" +#line 458 "ncgen.y" { /* for rare case where 2^31 < dimsize < 2^32 */ if (double_val <= 0) yyerror("dimension length must be positive"); @@ -2169,7 +2170,7 @@ fprintf(stderr,"dimension: %s = %lu\n",(yyvsp[(1) - (3)].sym)->name,(unsigned lo case 57: /* Line 1813 of yacc.c */ -#line 470 "ncgen.y" +#line 471 "ncgen.y" { (yyvsp[(1) - (3)].sym)->dim.declsize = NC_UNLIMITED; (yyvsp[(1) - (3)].sym)->dim.isunlimited = 1; @@ -2181,7 +2182,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 58: /* Line 1813 of yacc.c */ -#line 480 "ncgen.y" +#line 481 "ncgen.y" { (yyvsp[(1) - (1)].sym)->objectclass=NC_DIM; if(dupobjectcheck(NC_DIM,(yyvsp[(1) - (1)].sym))) @@ -2195,31 +2196,31 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 60: /* Line 1813 of yacc.c */ -#line 492 "ncgen.y" +#line 493 "ncgen.y" {} break; case 61: /* Line 1813 of yacc.c */ -#line 493 "ncgen.y" +#line 494 "ncgen.y" {} break; case 64: /* Line 1813 of yacc.c */ -#line 500 "ncgen.y" +#line 501 "ncgen.y" {} break; case 65: /* Line 1813 of yacc.c */ -#line 500 "ncgen.y" +#line 501 "ncgen.y" {} break; case 66: /* Line 1813 of yacc.c */ -#line 503 "ncgen.y" +#line 504 "ncgen.y" { int i; stackbase=(yyvsp[(2) - (2)].mark); @@ -2243,7 +2244,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 67: /* Line 1813 of yacc.c */ -#line 525 "ncgen.y" +#line 526 "ncgen.y" {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym)); } @@ -2251,13 +2252,13 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 68: /* Line 1813 of yacc.c */ -#line 529 "ncgen.y" +#line 530 "ncgen.y" {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));} break; case 69: /* Line 1813 of yacc.c */ -#line 533 "ncgen.y" +#line 534 "ncgen.y" { int i; Dimset dimset; @@ -2286,31 +2287,31 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 70: /* Line 1813 of yacc.c */ -#line 559 "ncgen.y" +#line 560 "ncgen.y" {(yyval.mark)=listlength(stack);} break; case 71: /* Line 1813 of yacc.c */ -#line 560 "ncgen.y" +#line 561 "ncgen.y" {(yyval.mark)=(yyvsp[(2) - (3)].mark);} break; case 72: /* Line 1813 of yacc.c */ -#line 563 "ncgen.y" +#line 564 "ncgen.y" {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym));} break; case 73: /* Line 1813 of yacc.c */ -#line 565 "ncgen.y" +#line 566 "ncgen.y" {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));} break; case 74: /* Line 1813 of yacc.c */ -#line 569 "ncgen.y" +#line 570 "ncgen.y" {Symbol* dimsym = (yyvsp[(1) - (1)].sym); dimsym->objectclass = NC_DIM; /* Find the actual dimension*/ @@ -2325,7 +2326,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 75: /* Line 1813 of yacc.c */ -#line 583 "ncgen.y" +#line 584 "ncgen.y" {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym)); } @@ -2333,13 +2334,13 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 76: /* Line 1813 of yacc.c */ -#line 587 "ncgen.y" +#line 588 "ncgen.y" {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));} break; case 77: /* Line 1813 of yacc.c */ -#line 592 "ncgen.y" +#line 593 "ncgen.y" { int i; Dimset dimset; @@ -2370,31 +2371,31 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 78: /* Line 1813 of yacc.c */ -#line 620 "ncgen.y" +#line 621 "ncgen.y" {(yyval.mark)=listlength(stack);} break; case 79: /* Line 1813 of yacc.c */ -#line 621 "ncgen.y" +#line 622 "ncgen.y" {(yyval.mark)=(yyvsp[(2) - (3)].mark);} break; case 80: /* Line 1813 of yacc.c */ -#line 625 "ncgen.y" +#line 626 "ncgen.y" {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym));} break; case 81: /* Line 1813 of yacc.c */ -#line 627 "ncgen.y" +#line 628 "ncgen.y" {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));} break; case 82: /* Line 1813 of yacc.c */ -#line 632 "ncgen.y" +#line 633 "ncgen.y" { /* Anonymous integer dimension. Can only occur in type definitions*/ char anon[32]; @@ -2408,7 +2409,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 83: /* Line 1813 of yacc.c */ -#line 642 "ncgen.y" +#line 643 "ncgen.y" { /* Anonymous integer dimension. Can only occur in type definitions*/ char anon[32]; @@ -2426,7 +2427,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 84: /* Line 1813 of yacc.c */ -#line 662 "ncgen.y" +#line 663 "ncgen.y" {Symbol* vsym = (yyvsp[(1) - (1)].sym); if(vsym->objectclass != NC_VAR) { derror("Undefined or forward referenced variable: %s",vsym->name); @@ -2438,7 +2439,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 85: /* Line 1813 of yacc.c */ -#line 673 "ncgen.y" +#line 674 "ncgen.y" {Symbol* tsym = (yyvsp[(1) - (1)].sym); if(tsym->objectclass != NC_TYPE) { derror("Undefined or forward referenced type: %s",tsym->name); @@ -2450,7 +2451,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 86: /* Line 1813 of yacc.c */ -#line 684 "ncgen.y" +#line 685 "ncgen.y" {Symbol* tvsym = (yyvsp[(1) - (1)].sym); Symbol* sym; /* disambiguate*/ tvsym->objectclass = NC_VAR; @@ -2473,31 +2474,31 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 87: /* Line 1813 of yacc.c */ -#line 702 "ncgen.y" +#line 703 "ncgen.y" {(yyval.sym)=(yyvsp[(1) - (1)].sym);} break; case 88: /* Line 1813 of yacc.c */ -#line 709 "ncgen.y" +#line 710 "ncgen.y" {} break; case 89: /* Line 1813 of yacc.c */ -#line 709 "ncgen.y" +#line 710 "ncgen.y" {} break; case 90: /* Line 1813 of yacc.c */ -#line 713 "ncgen.y" +#line 714 "ncgen.y" { (yyval.sym)=makeattribute((yyvsp[(2) - (4)].sym),NULL,NULL,(yyvsp[(4) - (4)].datalist),ATTRGLOBAL);} break; case 91: /* Line 1813 of yacc.c */ -#line 715 "ncgen.y" +#line 716 "ncgen.y" {Symbol* tsym = (yyvsp[(1) - (6)].sym); Symbol* vsym = (yyvsp[(2) - (6)].sym); Symbol* asym = (yyvsp[(4) - (6)].sym); if(vsym->objectclass == NC_VAR) { (yyval.sym)=makeattribute(asym,vsym,tsym,(yyvsp[(6) - (6)].datalist),ATTRVAR); @@ -2510,7 +2511,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 92: /* Line 1813 of yacc.c */ -#line 724 "ncgen.y" +#line 725 "ncgen.y" {Symbol* sym = (yyvsp[(1) - (5)].sym); Symbol* asym = (yyvsp[(3) - (5)].sym); if(sym->objectclass == NC_VAR) { (yyval.sym)=makeattribute(asym,sym,NULL,(yyvsp[(5) - (5)].datalist),ATTRVAR); @@ -2525,67 +2526,67 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 93: /* Line 1813 of yacc.c */ -#line 735 "ncgen.y" +#line 736 "ncgen.y" {(yyval.sym) = makespecial(_FILLVALUE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)(yyvsp[(5) - (5)].datalist),0);} break; case 94: /* Line 1813 of yacc.c */ -#line 737 "ncgen.y" +#line 738 "ncgen.y" {(yyval.sym) = makespecial(_FILLVALUE_FLAG,(yyvsp[(2) - (6)].sym),(yyvsp[(1) - (6)].sym),(void*)(yyvsp[(6) - (6)].datalist),0);} break; case 95: /* Line 1813 of yacc.c */ -#line 739 "ncgen.y" +#line 740 "ncgen.y" {(yyval.sym) = makespecial(_STORAGE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);} break; case 96: /* Line 1813 of yacc.c */ -#line 741 "ncgen.y" +#line 742 "ncgen.y" {(yyval.sym) = makespecial(_CHUNKSIZES_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)(yyvsp[(5) - (5)].datalist),0);} break; case 97: /* Line 1813 of yacc.c */ -#line 743 "ncgen.y" +#line 744 "ncgen.y" {(yyval.sym) = makespecial(_FLETCHER32_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);} break; case 98: /* Line 1813 of yacc.c */ -#line 745 "ncgen.y" +#line 746 "ncgen.y" {(yyval.sym) = makespecial(_DEFLATE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);} break; case 99: /* Line 1813 of yacc.c */ -#line 747 "ncgen.y" +#line 748 "ncgen.y" {(yyval.sym) = makespecial(_SHUFFLE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);} break; case 100: /* Line 1813 of yacc.c */ -#line 749 "ncgen.y" +#line 750 "ncgen.y" {(yyval.sym) = makespecial(_ENDIAN_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);} break; case 101: /* Line 1813 of yacc.c */ -#line 751 "ncgen.y" +#line 752 "ncgen.y" {(yyval.sym) = makespecial(_NOFILL_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);} break; case 102: /* Line 1813 of yacc.c */ -#line 753 "ncgen.y" +#line 754 "ncgen.y" {(yyval.sym) = makespecial(_FORMAT_FLAG,NULL,NULL,(void*)&(yyvsp[(4) - (4)].constant),1);} break; case 103: /* Line 1813 of yacc.c */ -#line 758 "ncgen.y" +#line 759 "ncgen.y" { (yyval.sym)=(yyvsp[(1) - (1)].sym); (yyvsp[(1) - (1)].sym)->is_ref=1; @@ -2595,7 +2596,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 104: /* Line 1813 of yacc.c */ -#line 764 "ncgen.y" +#line 765 "ncgen.y" { (yyval.sym)=(yyvsp[(1) - (1)].sym); (yyvsp[(1) - (1)].sym)->is_ref=1; @@ -2606,241 +2607,247 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); case 106: /* Line 1813 of yacc.c */ -#line 773 "ncgen.y" +#line 774 "ncgen.y" {} break; case 107: /* Line 1813 of yacc.c */ -#line 774 "ncgen.y" +#line 775 "ncgen.y" {} break; case 110: /* Line 1813 of yacc.c */ -#line 782 "ncgen.y" +#line 783 "ncgen.y" {(yyvsp[(1) - (3)].sym)->data = (yyvsp[(3) - (3)].datalist);} break; case 111: /* Line 1813 of yacc.c */ -#line 785 "ncgen.y" +#line 786 "ncgen.y" {(yyval.datalist) = (yyvsp[(1) - (1)].datalist);} break; case 112: /* Line 1813 of yacc.c */ -#line 786 "ncgen.y" +#line 787 "ncgen.y" {(yyval.datalist) = (yyvsp[(1) - (1)].datalist);} break; case 113: /* Line 1813 of yacc.c */ -#line 790 "ncgen.y" +#line 791 "ncgen.y" {(yyval.datalist) = builddatalist(0);} break; case 114: /* Line 1813 of yacc.c */ -#line 794 "ncgen.y" +#line 795 "ncgen.y" {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));} break; case 115: /* Line 1813 of yacc.c */ -#line 796 "ncgen.y" +#line 797 "ncgen.y" {datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant))); (yyval.datalist)=(yyvsp[(1) - (3)].datalist);} break; case 116: /* Line 1813 of yacc.c */ -#line 800 "ncgen.y" +#line 801 "ncgen.y" {(yyval.constant)=(yyvsp[(1) - (1)].constant);} break; case 117: /* Line 1813 of yacc.c */ -#line 801 "ncgen.y" +#line 802 "ncgen.y" {(yyval.constant)=builddatasublist((yyvsp[(2) - (3)].datalist));} break; case 118: /* Line 1813 of yacc.c */ -#line 805 "ncgen.y" +#line 806 "ncgen.y" {(yyval.constant)=(yyvsp[(1) - (1)].constant);} break; case 119: /* Line 1813 of yacc.c */ -#line 806 "ncgen.y" +#line 807 "ncgen.y" {(yyval.constant)=makeconstdata(NC_OPAQUE);} break; case 120: /* Line 1813 of yacc.c */ -#line 807 "ncgen.y" +#line 808 "ncgen.y" {(yyval.constant)=makeconstdata(NC_FILLVALUE);} break; case 121: /* Line 1813 of yacc.c */ -#line 808 "ncgen.y" - {(yyval.constant)=makeenumconst((yyvsp[(1) - (1)].sym));} +#line 809 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_NIL);} break; - case 123: + case 122: /* Line 1813 of yacc.c */ -#line 813 "ncgen.y" - {(yyval.constant)=evaluate((yyvsp[(1) - (4)].sym),(yyvsp[(3) - (4)].datalist));} +#line 810 "ncgen.y" + {(yyval.constant)=makeenumconst((yyvsp[(1) - (1)].sym));} break; case 124: /* Line 1813 of yacc.c */ -#line 818 "ncgen.y" - {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));} +#line 815 "ncgen.y" + {(yyval.constant)=evaluate((yyvsp[(1) - (4)].sym),(yyvsp[(3) - (4)].datalist));} break; case 125: /* Line 1813 of yacc.c */ #line 820 "ncgen.y" - {datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant))); (yyval.datalist)=(yyvsp[(1) - (3)].datalist);} + {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));} break; case 126: /* Line 1813 of yacc.c */ -#line 824 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_CHAR);} +#line 822 "ncgen.y" + {datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant))); (yyval.datalist)=(yyvsp[(1) - (3)].datalist);} break; case 127: /* Line 1813 of yacc.c */ -#line 825 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_BYTE);} +#line 826 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_CHAR);} break; case 128: /* Line 1813 of yacc.c */ -#line 826 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_SHORT);} +#line 827 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_BYTE);} break; case 129: /* Line 1813 of yacc.c */ -#line 827 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT);} +#line 828 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_SHORT);} break; case 130: /* Line 1813 of yacc.c */ -#line 828 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT64);} +#line 829 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_INT);} break; case 131: /* Line 1813 of yacc.c */ -#line 829 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UBYTE);} +#line 830 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_INT64);} break; case 132: /* Line 1813 of yacc.c */ -#line 830 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_USHORT);} +#line 831 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_UBYTE);} break; case 133: /* Line 1813 of yacc.c */ -#line 831 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT);} +#line 832 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_USHORT);} break; case 134: /* Line 1813 of yacc.c */ -#line 832 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT64);} +#line 833 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_UINT);} break; case 135: /* Line 1813 of yacc.c */ -#line 833 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_FLOAT);} +#line 834 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_UINT64);} break; case 136: /* Line 1813 of yacc.c */ -#line 834 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_DOUBLE);} +#line 835 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_FLOAT);} break; case 137: /* Line 1813 of yacc.c */ -#line 835 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_STRING);} +#line 836 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_DOUBLE);} break; case 138: /* Line 1813 of yacc.c */ -#line 839 "ncgen.y" - {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));} +#line 837 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_STRING);} break; case 139: /* Line 1813 of yacc.c */ -#line 840 "ncgen.y" - {(yyval.datalist)=(yyvsp[(1) - (3)].datalist); datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant)));} +#line 841 "ncgen.y" + {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));} break; case 140: /* Line 1813 of yacc.c */ -#line 845 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT);} +#line 842 "ncgen.y" + {(yyval.datalist)=(yyvsp[(1) - (3)].datalist); datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant)));} break; case 141: /* Line 1813 of yacc.c */ #line 847 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT);} + {(yyval.constant)=makeconstdata(NC_INT);} break; case 142: /* Line 1813 of yacc.c */ #line 849 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT64);} + {(yyval.constant)=makeconstdata(NC_UINT);} break; case 143: /* Line 1813 of yacc.c */ #line 851 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT64);} + {(yyval.constant)=makeconstdata(NC_INT64);} break; case 144: /* Line 1813 of yacc.c */ -#line 855 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_STRING);} +#line 853 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_UINT64);} break; case 145: /* Line 1813 of yacc.c */ -#line 859 "ncgen.y" - {(yyval.constant)=(yyvsp[(1) - (1)].constant);} +#line 857 "ncgen.y" + {(yyval.constant)=makeconstdata(NC_STRING);} break; case 146: /* Line 1813 of yacc.c */ -#line 860 "ncgen.y" +#line 861 "ncgen.y" {(yyval.constant)=(yyvsp[(1) - (1)].constant);} break; case 147: /* Line 1813 of yacc.c */ -#line 866 "ncgen.y" +#line 862 "ncgen.y" + {(yyval.constant)=(yyvsp[(1) - (1)].constant);} + break; + + case 148: +/* Line 1813 of yacc.c */ +#line 868 "ncgen.y" {(yyval.sym)=(yyvsp[(1) - (1)].sym);} break; /* Line 1813 of yacc.c */ -#line 2844 "ncgen.tab.c" +#line 2851 "ncgen.tab.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3072,7 +3079,7 @@ yyreturn: /* Line 2076 of yacc.c */ -#line 869 "ncgen.y" +#line 871 "ncgen.y" #ifndef NO_STDARG @@ -3249,11 +3256,14 @@ makeconstdata(nc_type nctype) con.value.opaquev.stringv = s; con.value.opaquev.len = len; } break; + + case NC_NIL: + break; /* no associated value*/ #endif case NC_FILLVALUE: break; /* no associated value*/ - + default: yyerror("Data constant: unexpected NC type: %s", nctypename(nctype)); diff --git a/ncgen/ncgentab.h b/ncgen/ncgentab.h index 51bf73601..7b09dc148 100644 --- a/ncgen/ncgentab.h +++ b/ncgen/ncgentab.h @@ -83,16 +83,17 @@ extern int ncgdebug; GROUP = 292, PATH = 293, FILLMARKER = 294, - _FILLVALUE = 295, - _FORMAT = 296, - _STORAGE = 297, - _CHUNKSIZES = 298, - _DEFLATELEVEL = 299, - _SHUFFLE = 300, - _ENDIANNESS = 301, - _NOFILL = 302, - _FLETCHER32 = 303, - DATASETID = 304 + NIL = 295, + _FILLVALUE = 296, + _FORMAT = 297, + _STORAGE = 298, + _CHUNKSIZES = 299, + _DEFLATELEVEL = 300, + _SHUFFLE = 301, + _ENDIANNESS = 302, + _NOFILL = 303, + _FLETCHER32 = 304, + DATASETID = 305 }; #endif @@ -112,7 +113,7 @@ Constant constant; /* Line 2077 of yacc.c */ -#line 116 "ncgen.tab.h" +#line 117 "ncgen.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/ncgen/ncgenyy.c b/ncgen/ncgenyy.c index 4c7ce0acb..78b24766c 100644 --- a/ncgen/ncgenyy.c +++ b/ncgen/ncgenyy.c @@ -378,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 49 -#define YY_END_OF_BUFFER 50 +#define YY_NUM_RULES 50 +#define YY_END_OF_BUFFER 51 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -387,49 +387,50 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[381] = +static yyconst flex_int16_t yy_accept[385] = { 0, - 0, 0, 46, 46, 0, 0, 50, 48, 1, 44, - 48, 48, 48, 48, 38, 30, 34, 34, 33, 33, - 33, 33, 33, 33, 33, 48, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 48, 48, 48, 46, 49, 32, 49, 1, - 0, 3, 0, 0, 0, 38, 34, 0, 0, 38, - 38, 0, 39, 45, 2, 30, 0, 0, 0, 0, - 34, 35, 36, 0, 33, 0, 0, 0, 0, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 0, 0, 47, 47, 0, 0, 51, 49, 1, 45, + 49, 49, 49, 49, 39, 31, 35, 35, 34, 34, + 34, 34, 34, 34, 34, 49, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 49, 49, 49, 47, 50, 33, 50, 1, + 0, 3, 0, 0, 0, 39, 35, 0, 0, 39, + 39, 0, 40, 46, 2, 31, 0, 0, 0, 0, + 35, 36, 37, 0, 34, 0, 0, 0, 0, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 0, 0, - 46, 0, 47, 32, 40, 0, 0, 0, 34, 0, - 38, 0, 0, 38, 2, 30, 0, 0, 0, 0, - 0, 0, 0, 36, 4, 0, 0, 33, 33, 33, - 33, 33, 33, 27, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 14, 33, 27, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 0, 43, - 41, 0, 0, 38, 0, 30, 0, 0, 0, 0, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 0, 0, 47, 0, 48, 33, 41, 0, 0, + 0, 35, 0, 39, 0, 0, 39, 2, 31, 0, + 0, 0, 0, 0, 0, 0, 37, 4, 0, 0, + 34, 34, 34, 34, 34, 34, 30, 27, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 14, 34, 27, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 0, 44, 42, 0, 0, 39, 0, 31, - 0, 0, 0, 4, 37, 0, 33, 33, 28, 33, - 33, 29, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 10, 9, 33, 33, 33, 33, 6, 33, - 33, 33, 33, 14, 33, 33, 33, 8, 33, 33, - 33, 33, 15, 33, 33, 33, 33, 41, 0, 42, - 0, 28, 0, 30, 0, 0, 0, 0, 0, 0, - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 23, 33, 33, 33, - 16, 33, 33, 33, 33, 12, 33, 33, 11, 33, - 33, 15, 33, 33, 33, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 0, 4, 38, 0, + 34, 34, 28, 34, 34, 29, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 10, 9, 34, 34, + 34, 34, 6, 34, 34, 34, 34, 14, 34, 34, + 34, 8, 34, 34, 34, 34, 15, 34, 34, 34, + 34, 42, 0, 43, 0, 28, 0, 31, 0, 0, + 0, 0, 0, 0, 0, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 23, 34, 34, 34, 16, 34, 34, 34, 34, 12, + 34, 34, 11, 34, 34, 15, 34, 34, 34, 0, - 33, 33, 25, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 18, 24, 33, 7, 5, - 20, 17, 33, 33, 13, 33, 0, 0, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 31, 33, 33, - 33, 33, 33, 33, 33, 33, 0, 33, 26, 33, - 33, 33, 33, 33, 33, 5, 33, 33, 33, 33, - 26, 26, 19, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 22, 33, 21, 33, 0 + 0, 0, 0, 34, 34, 34, 25, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 18, + 24, 34, 7, 5, 20, 17, 34, 34, 13, 34, + 0, 0, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 32, 34, 34, 34, 34, 34, 34, 34, 34, + 0, 34, 26, 34, 34, 34, 34, 34, 34, 5, + 34, 34, 34, 34, 26, 26, 19, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 22, + 34, 21, 34, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -475,103 +476,105 @@ static yyconst flex_int32_t yy_meta[68] = 11, 11, 14, 1, 11, 11, 11 } ; -static yyconst flex_int16_t yy_base[399] = +static yyconst flex_int16_t yy_base[403] = { 0, - 0, 0, 326, 324, 267, 266, 325, 2141, 66, 2141, - 63, 285, 60, 61, 93, 83, 140, 258, 50, 60, - 191, 64, 95, 102, 147, 202, 198, 126, 188, 194, - 242, 201, 206, 231, 236, 240, 250, 243, 253, 261, - 283, 210, 229, 228, 226, 278, 270, 0, 2141, 78, - 86, 2141, 276, 263, 328, 0, 355, 342, 200, 0, - 2141, 400, 2141, 2141, 0, 324, 407, 185, 182, 181, - 206, 2141, 354, 0, 247, 423, 176, 174, 173, 341, - 74, 423, 398, 404, 418, 409, 424, 429, 434, 444, - 440, 464, 455, 477, 460, 494, 485, 481, 490, 499, + 0, 0, 329, 328, 268, 264, 326, 2197, 66, 2197, + 63, 285, 60, 61, 93, 83, 140, 285, 50, 60, + 191, 64, 95, 154, 102, 198, 198, 180, 195, 228, + 269, 188, 213, 221, 232, 252, 237, 245, 267, 263, + 297, 275, 256, 252, 245, 300, 295, 0, 2197, 78, + 86, 2197, 303, 277, 342, 0, 369, 356, 230, 0, + 2197, 414, 2197, 2197, 0, 338, 421, 213, 210, 208, + 234, 2197, 141, 0, 351, 437, 203, 188, 186, 355, + 74, 437, 412, 418, 432, 423, 436, 443, 456, 453, + 466, 473, 476, 496, 492, 489, 510, 486, 499, 522, - 511, 515, 531, 525, 534, 537, 547, 555, 568, 571, - 585, 577, 588, 580, 610, 618, 592, 622, 169, 164, - 219, 199, 2141, 0, 2141, 196, 679, 195, 0, 685, - 692, 153, 710, 730, 0, 700, 696, 764, 132, 131, - 130, 125, 124, 2141, 447, 122, 119, 712, 716, 720, - 750, 753, 765, 759, 770, 774, 783, 791, 804, 800, - 807, 824, 817, 839, 842, 847, 856, 859, 873, 877, - 881, 862, 892, 916, 899, 911, 929, 924, 934, 937, - 947, 942, 903, 959, 967, 972, 977, 980, 118, 2141, - 2141, 1041, 173, 2141, 48, 1011, 1047, 114, 112, 110, + 531, 534, 543, 552, 568, 546, 576, 584, 565, 587, + 600, 606, 609, 621, 591, 617, 641, 632, 651, 656, + 625, 185, 180, 235, 228, 2197, 0, 2197, 232, 697, + 230, 0, 711, 718, 190, 736, 756, 0, 726, 722, + 790, 170, 168, 164, 163, 131, 2197, 146, 129, 125, + 738, 742, 746, 776, 779, 791, 782, 785, 796, 800, + 826, 817, 830, 834, 838, 843, 847, 864, 877, 860, + 869, 880, 884, 899, 903, 915, 918, 934, 921, 951, + 937, 954, 957, 970, 973, 987, 976, 990, 995, 1011, + 1020, 1026, 124, 2197, 2197, 1081, 180, 2197, 48, 1051, - 108, 107, 101, 483, 2141, 88, 1002, 1015, 1032, 1036, - 1046, 1041, 1052, 1057, 1066, 1062, 1076, 1082, 1087, 1096, - 1092, 1108, 1101, 1112, 1117, 1131, 1134, 1138, 1127, 1149, - 1152, 1143, 1174, 1157, 1164, 1183, 1187, 1190, 1200, 1194, - 1205, 1225, 1250, 1235, 1213, 1239, 1244, 2141, 139, 2141, - 138, 2141, 92, 1274, 1314, 77, 75, 71, 70, 68, - 58, 1259, 1270, 1290, 1304, 1294, 1309, 1313, 1324, 1209, - 1330, 1327, 1316, 1360, 1346, 1349, 2141, 1363, 1366, 1379, - 1369, 1399, 1411, 1402, 1414, 1417, 1432, 1421, 1435, 1454, - 1447, 1451, 1457, 1468, 1487, 55, 36, 35, 33, 1465, + 1052, 122, 121, 114, 108, 101, 88, 419, 2197, 82, + 1062, 1043, 1037, 1067, 1082, 1073, 1092, 1098, 1076, 1087, + 1106, 1117, 1123, 1128, 1132, 1113, 1143, 1147, 1153, 1166, + 1163, 1173, 1169, 1179, 1187, 1183, 1205, 1209, 1217, 1220, + 1229, 1224, 1235, 1239, 1242, 1254, 1279, 1265, 1274, 1286, + 1289, 2197, 138, 2197, 137, 2197, 90, 1298, 1353, 77, + 75, 71, 68, 64, 58, 1305, 1309, 1329, 1341, 1352, + 1344, 1347, 1359, 1362, 1392, 1382, 1385, 1395, 1398, 1407, + 2197, 1418, 1377, 1433, 1403, 1438, 1450, 1441, 1453, 1429, + 1463, 1472, 1475, 1485, 1488, 1493, 1497, 1508, 1527, 55, - 1477, 1498, 1472, 1507, 1513, 1502, 1510, 1517, 1523, 1528, - 1547, 1553, 1558, 1563, 1533, 1567, 2141, 1570, 1573, 1583, - 2141, 1578, 1603, 1593, 1589, 1614, 36, 25, 1619, 1608, - 1627, 1640, 1624, 1657, 1644, 1649, 1660, 1664, 1674, 1690, - 1670, 1679, 1682, 1695, 1714, 1721, 24, 1705, 1728, 1738, - 1744, 1747, 1731, 1761, 1751, 1764, 1770, 1777, 1781, 1794, - 36, 1787, 1800, 1811, 1818, 1807, 1825, 1841, 1830, 1850, - 1837, 1833, 1844, 1874, 1885, 2141, 1880, 2141, 1888, 2141, - 1955, 1969, 1983, 1997, 2006, 2015, 2024, 2037, 2051, 2064, - 2078, 2088, 2094, 2102, 2104, 2110, 2121, 2127 + 36, 35, 33, 1518, 1505, 1511, 1523, 1548, 1558, 1541, + 1564, 1571, 1574, 1584, 1567, 1597, 1606, 1615, 1610, 1589, + 2197, 1622, 1619, 1631, 2197, 1627, 1657, 1641, 1645, 1653, + 36, 25, 1662, 1671, 1679, 1687, 1667, 1697, 1704, 1693, + 1711, 1701, 1735, 1742, 1745, 1751, 1757, 1765, 1761, 1776, + 24, 1727, 1791, 1781, 1787, 1807, 1795, 1800, 1812, 1817, + 1833, 1825, 1837, 1848, 36, 1843, 1851, 1857, 1868, 1873, + 1881, 1891, 1888, 1911, 1894, 1903, 1914, 1927, 1924, 2197, + 1944, 2197, 1934, 2197, 2011, 2025, 2039, 2053, 2062, 2071, + 2080, 2093, 2107, 2120, 2134, 2144, 2150, 2158, 2160, 2166, + 2177, 2183 } ; -static yyconst flex_int16_t yy_def[399] = +static yyconst flex_int16_t yy_def[403] = { 0, - 380, 1, 381, 381, 382, 382, 380, 380, 380, 380, - 383, 384, 380, 385, 380, 386, 380, 17, 387, 387, - 387, 387, 387, 387, 387, 380, 387, 387, 387, 387, - 21, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 380, 380, 380, 388, 388, 389, 380, 380, - 383, 380, 383, 380, 390, 15, 380, 380, 380, 15, - 380, 380, 380, 380, 391, 392, 380, 380, 380, 380, - 17, 380, 380, 393, 387, 380, 380, 380, 380, 387, - 21, 21, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 384, 1, 385, 385, 386, 386, 384, 384, 384, 384, + 387, 388, 384, 389, 384, 390, 384, 17, 391, 391, + 391, 391, 391, 391, 391, 384, 391, 391, 391, 391, + 21, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 384, 384, 384, 392, 392, 393, 384, 384, + 387, 384, 387, 384, 394, 15, 384, 384, 384, 15, + 384, 384, 384, 384, 395, 396, 384, 384, 384, 384, + 17, 384, 384, 397, 391, 384, 384, 384, 384, 391, + 21, 21, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 380, 380, - 388, 388, 380, 389, 380, 380, 380, 394, 57, 380, - 380, 380, 380, 380, 391, 392, 395, 380, 380, 380, - 380, 380, 380, 380, 396, 380, 380, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 380, 380, - 380, 380, 397, 380, 380, 398, 380, 380, 380, 380, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 384, 384, 392, 392, 384, 393, 384, 384, 384, + 398, 57, 384, 384, 384, 384, 384, 395, 396, 399, + 384, 384, 384, 384, 384, 384, 384, 400, 384, 384, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 384, 384, 384, 384, 401, 384, 384, 402, - 380, 380, 380, 396, 380, 380, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 380, 380, 380, - 380, 380, 380, 398, 380, 380, 380, 380, 380, 380, - 380, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 380, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 380, 380, 380, 380, 387, + 384, 384, 384, 384, 384, 384, 384, 400, 384, 384, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 384, 384, 384, 384, 384, 384, 402, 384, 384, + 384, 384, 384, 384, 384, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 384, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 384, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 380, 387, 387, 387, - 380, 387, 387, 387, 387, 387, 380, 380, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 380, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 380, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 380, 387, 380, 387, 0, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380 + 384, 384, 384, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 384, 391, 391, 391, 384, 391, 391, 391, 391, 391, + 384, 384, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 384, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 384, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 384, + 391, 384, 391, 0, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384 } ; -static yyconst flex_int16_t yy_nxt[2209] = +static yyconst flex_int16_t yy_nxt[2265] = { 0, 8, 9, 10, 9, 8, 11, 12, 8, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 8, @@ -581,244 +584,250 @@ static yyconst flex_int16_t yy_nxt[2209] = 19, 36, 37, 19, 19, 38, 39, 40, 41, 42, 19, 19, 8, 8, 43, 44, 45, 50, 52, 50, 56, 56, 57, 57, 57, 57, 57, 57, 57, 50, - 252, 50, 75, 75, 361, 58, 58, 76, 254, 59, - 64, 52, 252, 347, 65, 253, 196, 76, 328, 254, + 256, 50, 75, 75, 365, 58, 58, 76, 258, 59, + 64, 52, 256, 351, 65, 257, 200, 76, 332, 258, - 53, 76, 327, 58, 58, 60, 60, 60, 60, 60, + 53, 76, 331, 58, 58, 60, 60, 60, 60, 60, 60, 60, 80, 83, 77, 78, 79, 61, 62, 63, - 67, 136, 61, 53, 77, 78, 79, 85, 77, 78, - 79, 299, 76, 196, 298, 61, 62, 63, 297, 76, - 254, 86, 61, 296, 250, 248, 84, 68, 69, 70, - 56, 75, 71, 71, 71, 71, 71, 71, 71, 77, - 78, 79, 72, 76, 66, 58, 77, 78, 79, 72, - 261, 136, 72, 260, 73, 259, 74, 196, 87, 250, - 72, 88, 206, 58, 76, 75, 95, 203, 66, 72, - 77, 78, 79, 202, 201, 136, 72, 195, 73, 81, + 67, 139, 61, 53, 77, 78, 79, 303, 77, 78, + 79, 200, 76, 89, 302, 61, 62, 63, 301, 76, + 258, 300, 61, 254, 252, 75, 84, 68, 69, 70, + 56, 66, 71, 71, 71, 71, 71, 71, 71, 77, + 78, 79, 72, 147, 265, 58, 77, 78, 79, 72, + 147, 139, 72, 147, 73, 209, 74, 264, 209, 85, + 72, 147, 86, 58, 263, 200, 254, 90, 210, 72, + 147, 76, 75, 87, 207, 209, 72, 147, 73, 81, - 81, 190, 190, 82, 82, 82, 82, 82, 82, 82, - 380, 77, 78, 79, 88, 88, 88, 88, 88, 88, - 88, 89, 90, 91, 92, 76, 122, 189, 76, 93, - 94, 76, 88, 98, 96, 76, 147, 146, 76, 75, - 97, 99, 380, 76, 143, 142, 100, 76, 66, 118, - 102, 132, 77, 78, 79, 77, 78, 79, 77, 78, - 79, 103, 77, 78, 79, 77, 78, 79, 76, 125, - 77, 78, 79, 76, 77, 78, 79, 76, 380, 106, - 76, 123, 104, 107, 76, 122, 109, 76, 105, 120, - 76, 119, 88, 101, 380, 77, 78, 79, 76, 110, + 81, 88, 209, 82, 82, 82, 82, 82, 82, 82, + 90, 90, 90, 90, 90, 90, 90, 76, 77, 78, + 79, 91, 92, 93, 94, 76, 66, 206, 76, 95, + 96, 205, 76, 139, 199, 76, 194, 104, 194, 384, + 97, 98, 125, 193, 77, 78, 79, 99, 90, 150, + 76, 149, 77, 78, 79, 77, 78, 79, 76, 77, + 78, 79, 77, 78, 79, 76, 75, 100, 105, 76, + 384, 146, 106, 145, 76, 101, 66, 77, 78, 79, + 102, 135, 76, 128, 107, 77, 78, 79, 112, 76, + 111, 108, 77, 78, 79, 109, 77, 78, 79, 110, - 77, 78, 79, 108, 77, 78, 79, 77, 78, 79, - 111, 77, 78, 79, 77, 78, 79, 77, 78, 79, - 76, 112, 55, 113, 380, 77, 78, 79, 49, 49, - 114, 47, 115, 47, 116, 137, 380, 380, 380, 117, - 127, 127, 127, 127, 127, 127, 380, 77, 78, 79, - 130, 130, 380, 380, 131, 131, 131, 131, 131, 131, - 131, 138, 380, 380, 128, 56, 380, 129, 129, 129, - 129, 129, 129, 129, 380, 380, 144, 72, 76, 380, - 58, 380, 380, 144, 72, 380, 144, 72, 139, 140, - 141, 380, 380, 380, 144, 72, 380, 380, 58, 148, + 76, 77, 78, 79, 76, 384, 126, 125, 123, 77, + 78, 79, 76, 113, 121, 122, 77, 78, 79, 90, + 103, 384, 55, 115, 114, 384, 49, 77, 78, 79, + 49, 77, 78, 79, 76, 47, 47, 116, 384, 77, + 78, 79, 384, 384, 117, 384, 118, 384, 119, 140, + 384, 384, 384, 120, 130, 130, 130, 130, 130, 130, + 384, 77, 78, 79, 133, 133, 384, 384, 134, 134, + 134, 134, 134, 134, 134, 141, 384, 384, 131, 56, + 384, 132, 132, 132, 132, 132, 132, 132, 76, 384, + 384, 72, 76, 384, 58, 384, 384, 384, 72, 384, - 380, 380, 380, 144, 72, 77, 78, 79, 133, 133, - 144, 72, 134, 134, 134, 134, 134, 134, 134, 66, - 66, 66, 66, 66, 66, 66, 75, 75, 75, 75, - 75, 75, 75, 380, 380, 76, 380, 380, 380, 380, - 154, 76, 75, 380, 380, 380, 76, 149, 152, 150, - 151, 153, 149, 155, 380, 76, 380, 380, 380, 380, - 75, 76, 77, 78, 79, 149, 76, 150, 77, 78, - 79, 76, 149, 77, 78, 79, 205, 76, 380, 205, - 156, 76, 77, 78, 79, 75, 380, 157, 77, 78, - 79, 158, 76, 77, 78, 79, 205, 76, 77, 78, + 384, 72, 142, 143, 144, 384, 384, 384, 384, 72, + 384, 384, 58, 151, 384, 77, 78, 79, 72, 77, + 78, 79, 136, 136, 384, 72, 137, 137, 137, 137, + 137, 137, 137, 66, 66, 66, 66, 66, 66, 66, + 75, 75, 75, 75, 75, 75, 75, 384, 209, 76, + 384, 209, 157, 384, 384, 76, 75, 384, 384, 384, + 76, 152, 155, 153, 154, 156, 152, 158, 209, 76, + 384, 384, 384, 76, 75, 209, 77, 78, 79, 152, + 76, 153, 77, 78, 79, 159, 152, 77, 78, 79, + 76, 384, 157, 76, 384, 384, 77, 78, 79, 75, - 79, 76, 380, 205, 77, 78, 79, 162, 77, 78, - 79, 159, 205, 160, 76, 205, 161, 165, 76, 77, - 78, 79, 76, 163, 77, 78, 79, 76, 77, 78, - 79, 76, 205, 166, 164, 167, 76, 380, 168, 205, - 169, 77, 78, 79, 380, 77, 78, 79, 76, 77, - 78, 79, 76, 380, 77, 78, 79, 170, 77, 78, - 79, 380, 76, 77, 78, 79, 380, 172, 76, 171, - 380, 76, 380, 380, 76, 77, 78, 79, 380, 77, - 78, 79, 174, 173, 76, 175, 380, 380, 176, 77, - 78, 79, 76, 380, 178, 77, 78, 79, 77, 78, - - 79, 77, 78, 79, 177, 76, 380, 179, 76, 380, - 380, 77, 78, 79, 76, 380, 380, 76, 380, 77, - 78, 79, 76, 180, 380, 76, 380, 380, 380, 76, - 182, 184, 77, 78, 79, 77, 78, 79, 187, 380, - 181, 77, 78, 79, 77, 78, 79, 76, 183, 77, - 78, 79, 77, 78, 79, 76, 77, 78, 79, 76, - 380, 380, 185, 380, 380, 380, 380, 186, 380, 380, - 380, 380, 380, 380, 77, 78, 79, 188, 380, 380, - 380, 380, 77, 78, 79, 191, 77, 78, 79, 380, - 380, 192, 192, 192, 192, 192, 192, 131, 131, 131, - - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 137, 380, 380, 380, 380, 194, 380, 63, 380, - 380, 194, 134, 134, 134, 134, 134, 134, 134, 380, - 380, 380, 380, 197, 194, 380, 63, 138, 380, 380, - 380, 194, 134, 134, 134, 134, 134, 134, 134, 76, - 380, 380, 207, 76, 61, 380, 63, 76, 380, 61, - 198, 199, 200, 380, 139, 140, 141, 136, 136, 136, - 136, 136, 61, 380, 63, 380, 77, 78, 79, 61, - 77, 78, 79, 136, 77, 78, 79, 76, 211, 208, - 76, 380, 380, 380, 380, 380, 76, 209, 213, 380, - - 210, 136, 76, 212, 380, 380, 380, 76, 380, 380, - 380, 76, 380, 380, 77, 78, 79, 77, 78, 79, - 76, 380, 380, 77, 78, 79, 136, 215, 76, 77, - 78, 79, 214, 216, 77, 78, 79, 76, 77, 78, - 79, 76, 380, 218, 76, 380, 380, 77, 78, 79, - 220, 380, 380, 217, 76, 77, 78, 79, 380, 380, - 380, 76, 219, 380, 77, 78, 79, 380, 77, 78, - 79, 77, 78, 79, 380, 221, 76, 380, 380, 76, - 380, 77, 78, 79, 76, 223, 380, 380, 77, 78, - 79, 222, 380, 76, 380, 380, 76, 380, 226, 76, - - 380, 230, 224, 77, 78, 79, 77, 78, 79, 225, - 76, 77, 78, 79, 76, 380, 227, 228, 76, 380, + 77, 78, 79, 76, 384, 384, 384, 77, 78, 79, + 76, 384, 160, 76, 384, 384, 161, 77, 78, 79, + 77, 78, 79, 76, 384, 170, 76, 162, 384, 76, + 77, 78, 79, 76, 384, 167, 76, 77, 78, 79, + 77, 78, 79, 163, 166, 164, 168, 76, 165, 171, 77, 78, 79, 77, 78, 79, 77, 78, 79, 76, - 380, 229, 380, 232, 380, 380, 76, 77, 78, 79, - 76, 77, 78, 79, 234, 77, 78, 79, 76, 380, - 231, 380, 235, 76, 380, 212, 77, 78, 79, 233, - 242, 76, 380, 77, 78, 79, 76, 77, 78, 79, - 236, 76, 380, 380, 76, 77, 78, 79, 237, 76, - 77, 78, 79, 238, 76, 241, 380, 380, 77, 78, - 79, 380, 239, 77, 78, 79, 76, 380, 77, 78, + 77, 78, 79, 77, 78, 79, 384, 169, 76, 384, + 384, 76, 384, 384, 77, 78, 79, 384, 384, 172, + 76, 173, 384, 76, 384, 384, 77, 78, 79, 76, + 384, 384, 174, 384, 384, 77, 78, 79, 77, 78, - 79, 77, 78, 79, 76, 240, 77, 78, 79, 76, - 380, 77, 78, 79, 76, 380, 243, 76, 244, 245, - 380, 380, 137, 77, 78, 79, 380, 247, 380, 246, - 380, 77, 78, 79, 380, 380, 77, 78, 79, 76, - 380, 77, 78, 79, 77, 78, 79, 248, 255, 380, - 380, 262, 76, 249, 249, 249, 249, 249, 249, 196, - 196, 196, 196, 196, 196, 196, 77, 78, 79, 76, - 265, 380, 263, 76, 380, 256, 257, 258, 76, 77, - 78, 79, 266, 76, 380, 380, 380, 264, 380, 76, - 380, 380, 380, 380, 76, 380, 77, 78, 79, 76, + 79, 175, 76, 178, 176, 76, 384, 77, 78, 79, + 77, 78, 79, 76, 384, 384, 77, 78, 79, 384, + 177, 76, 181, 384, 76, 384, 384, 179, 76, 77, + 78, 79, 77, 78, 79, 180, 157, 76, 384, 182, + 77, 78, 79, 76, 186, 183, 76, 384, 77, 78, + 79, 77, 78, 79, 76, 77, 78, 79, 76, 384, + 384, 184, 76, 384, 77, 78, 79, 384, 384, 76, + 77, 78, 79, 77, 78, 79, 185, 187, 76, 384, + 192, 77, 78, 79, 189, 77, 78, 79, 76, 77, + 78, 79, 188, 76, 384, 384, 77, 78, 79, 384, - 77, 78, 79, 76, 380, 77, 78, 79, 267, 269, - 77, 78, 79, 76, 380, 268, 77, 78, 79, 76, - 380, 77, 78, 79, 76, 270, 77, 78, 79, 76, - 77, 78, 79, 76, 380, 380, 274, 272, 76, 271, - 77, 78, 79, 273, 380, 76, 77, 78, 79, 76, - 277, 77, 78, 79, 76, 380, 77, 78, 79, 281, - 77, 78, 79, 275, 76, 77, 78, 79, 76, 276, - 380, 76, 77, 78, 79, 76, 77, 78, 79, 380, - 76, 77, 78, 79, 380, 278, 76, 279, 283, 76, - 380, 77, 78, 79, 76, 77, 78, 79, 77, 78, + 190, 384, 191, 195, 384, 77, 78, 79, 384, 196, + 196, 196, 196, 196, 196, 77, 78, 79, 384, 384, + 77, 78, 79, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 140, 384, 384, + 384, 384, 198, 384, 63, 384, 384, 198, 137, 137, + 137, 137, 137, 137, 137, 384, 384, 384, 384, 201, + 198, 384, 63, 141, 384, 384, 384, 198, 137, 137, + 137, 137, 137, 137, 137, 76, 384, 384, 211, 76, + 61, 384, 63, 76, 384, 61, 202, 203, 204, 384, + 142, 143, 144, 139, 139, 139, 139, 139, 61, 384, - 79, 76, 77, 78, 79, 280, 238, 77, 78, 79, - 380, 76, 380, 77, 78, 79, 77, 78, 79, 282, - 76, 77, 78, 79, 76, 284, 380, 76, 77, 78, - 79, 76, 380, 380, 380, 287, 380, 76, 77, 78, - 79, 380, 76, 380, 308, 285, 76, 77, 78, 79, - 76, 77, 78, 79, 77, 78, 79, 286, 77, 78, - 79, 288, 76, 293, 77, 78, 79, 290, 289, 77, - 78, 79, 76, 77, 78, 79, 76, 77, 78, 79, - 292, 76, 380, 295, 380, 137, 380, 76, 380, 77, - 78, 79, 380, 291, 294, 380, 76, 380, 301, 77, + 63, 384, 77, 78, 79, 61, 77, 78, 79, 139, + 77, 78, 79, 76, 215, 212, 76, 384, 384, 76, + 384, 384, 76, 213, 217, 384, 214, 139, 76, 216, + 384, 384, 384, 76, 384, 384, 384, 76, 384, 384, + 77, 78, 79, 77, 78, 79, 77, 78, 79, 77, + 78, 79, 139, 384, 76, 77, 78, 79, 218, 220, + 77, 78, 79, 76, 77, 78, 79, 76, 384, 224, + 219, 76, 384, 384, 384, 76, 384, 222, 384, 221, + 76, 77, 78, 79, 76, 384, 384, 384, 384, 384, + 77, 78, 79, 223, 77, 78, 79, 76, 77, 78, - 78, 79, 300, 77, 78, 79, 380, 76, 77, 78, - 79, 255, 380, 380, 77, 78, 79, 254, 254, 254, - 254, 254, 304, 77, 78, 79, 380, 76, 380, 380, - 303, 76, 380, 254, 77, 78, 79, 302, 256, 257, - 258, 76, 380, 380, 380, 380, 76, 380, 380, 380, - 76, 254, 306, 76, 77, 78, 79, 305, 77, 78, - 79, 76, 380, 307, 76, 311, 310, 76, 77, 78, - 79, 309, 380, 77, 78, 79, 254, 77, 78, 79, - 77, 78, 79, 76, 380, 313, 76, 380, 77, 78, - 79, 77, 78, 79, 77, 78, 79, 76, 317, 380, + 79, 76, 77, 78, 79, 225, 76, 77, 78, 79, + 384, 77, 78, 79, 76, 228, 226, 76, 384, 230, + 227, 76, 229, 384, 77, 78, 79, 231, 77, 78, + 79, 384, 384, 77, 78, 79, 76, 384, 384, 232, + 76, 77, 78, 79, 77, 78, 79, 384, 77, 78, + 79, 236, 76, 233, 234, 76, 384, 384, 76, 384, + 239, 384, 384, 77, 78, 79, 238, 77, 78, 79, + 384, 76, 384, 384, 76, 384, 235, 237, 240, 77, + 78, 79, 77, 78, 79, 77, 78, 79, 76, 384, + 384, 76, 384, 384, 76, 216, 384, 384, 77, 78, - 76, 380, 380, 76, 312, 380, 76, 314, 380, 316, - 77, 78, 79, 77, 78, 79, 76, 380, 380, 315, - 380, 380, 380, 380, 77, 78, 79, 77, 78, 79, - 77, 78, 79, 77, 78, 79, 76, 303, 380, 76, - 321, 380, 318, 77, 78, 79, 303, 380, 76, 380, - 380, 76, 380, 380, 76, 380, 380, 319, 76, 380, - 380, 380, 380, 77, 78, 79, 77, 78, 79, 76, - 322, 380, 76, 380, 380, 77, 78, 79, 77, 78, - 79, 77, 78, 79, 76, 77, 78, 79, 76, 320, - 380, 76, 323, 329, 76, 380, 77, 78, 79, 77, + 79, 77, 78, 79, 384, 384, 242, 76, 241, 384, + 76, 384, 384, 76, 384, 77, 78, 79, 77, 78, + 79, 77, 78, 79, 76, 243, 384, 76, 384, 384, + 245, 244, 76, 246, 77, 78, 79, 77, 78, 79, + 77, 78, 79, 384, 384, 384, 248, 247, 76, 384, + 384, 77, 78, 79, 77, 78, 79, 76, 249, 77, + 78, 79, 140, 76, 200, 200, 200, 200, 200, 200, + 200, 384, 250, 251, 76, 77, 78, 79, 384, 384, + 76, 384, 384, 384, 77, 78, 79, 252, 259, 384, + 77, 78, 79, 253, 253, 253, 253, 253, 253, 76, - 78, 79, 76, 380, 324, 76, 380, 380, 380, 76, - 380, 77, 78, 79, 76, 77, 78, 79, 77, 78, - 79, 77, 78, 79, 76, 325, 380, 326, 330, 77, - 78, 79, 77, 78, 79, 76, 77, 78, 79, 76, - 332, 77, 78, 79, 76, 333, 380, 76, 380, 380, - 76, 77, 78, 79, 76, 331, 336, 380, 380, 334, - 76, 335, 77, 78, 79, 76, 77, 78, 79, 337, - 76, 77, 78, 79, 77, 78, 79, 77, 78, 79, - 342, 77, 78, 79, 76, 338, 380, 77, 78, 79, - 76, 380, 77, 78, 79, 76, 338, 77, 78, 79, + 267, 77, 78, 79, 76, 384, 269, 77, 78, 79, + 76, 266, 384, 76, 384, 260, 261, 262, 268, 76, + 384, 384, 270, 384, 76, 272, 77, 78, 79, 76, + 384, 77, 78, 79, 273, 76, 384, 77, 78, 79, + 77, 78, 79, 76, 384, 384, 77, 78, 79, 271, + 76, 77, 78, 79, 76, 274, 77, 78, 79, 384, + 76, 384, 77, 78, 79, 76, 384, 384, 279, 76, + 77, 78, 79, 276, 275, 277, 278, 77, 78, 79, + 76, 77, 78, 79, 76, 281, 384, 77, 78, 79, + 76, 384, 77, 78, 79, 384, 77, 78, 79, 285, - 76, 380, 339, 340, 76, 380, 380, 76, 380, 380, - 76, 77, 78, 79, 341, 76, 380, 77, 78, 79, - 76, 380, 77, 78, 79, 234, 76, 77, 78, 79, - 76, 77, 78, 79, 77, 78, 79, 77, 78, 79, - 76, 343, 77, 78, 79, 76, 344, 77, 78, 79, - 345, 76, 209, 77, 78, 79, 76, 77, 78, 79, - 380, 76, 380, 346, 76, 350, 380, 77, 78, 79, - 348, 351, 77, 78, 79, 380, 380, 76, 77, 78, - 79, 76, 380, 77, 78, 79, 76, 349, 77, 78, - 79, 77, 78, 79, 76, 353, 380, 76, 354, 380, + 76, 384, 384, 76, 384, 280, 76, 77, 78, 79, + 76, 77, 78, 79, 282, 384, 76, 77, 78, 79, + 76, 384, 283, 384, 76, 384, 384, 77, 78, 79, + 77, 78, 79, 77, 78, 79, 242, 77, 78, 79, + 284, 287, 76, 77, 78, 79, 76, 77, 78, 79, + 286, 77, 78, 79, 76, 384, 384, 76, 384, 384, + 384, 76, 288, 384, 384, 384, 76, 384, 384, 77, + 78, 79, 76, 77, 78, 79, 76, 384, 384, 76, + 291, 77, 78, 79, 77, 78, 79, 289, 77, 78, + 79, 76, 290, 77, 78, 79, 294, 293, 292, 77, - 352, 76, 380, 355, 77, 78, 79, 76, 77, 78, - 79, 76, 356, 77, 78, 79, 76, 338, 380, 76, - 380, 77, 78, 79, 77, 78, 79, 76, 77, 78, - 79, 357, 76, 338, 77, 78, 79, 358, 77, 78, - 79, 380, 76, 77, 78, 79, 77, 78, 79, 362, - 292, 76, 380, 380, 77, 78, 79, 359, 76, 77, - 78, 79, 363, 380, 360, 76, 380, 380, 76, 77, - 78, 79, 209, 380, 366, 76, 365, 380, 77, 78, - 79, 76, 380, 380, 76, 77, 78, 79, 76, 380, - 380, 380, 77, 78, 79, 77, 78, 79, 76, 380, + 78, 79, 76, 77, 78, 79, 77, 78, 79, 140, + 296, 76, 384, 384, 384, 384, 76, 384, 77, 78, + 79, 384, 295, 76, 297, 384, 76, 384, 299, 77, + 78, 79, 384, 384, 384, 259, 384, 305, 77, 78, + 79, 298, 76, 77, 78, 79, 76, 384, 304, 384, + 77, 78, 79, 77, 78, 79, 258, 258, 258, 258, + 258, 384, 260, 261, 262, 384, 76, 307, 384, 77, + 78, 79, 258, 77, 78, 79, 306, 384, 76, 384, + 308, 76, 384, 384, 76, 384, 310, 384, 384, 76, + 258, 384, 309, 77, 78, 79, 76, 312, 311, 76, - 380, 76, 77, 78, 79, 364, 368, 76, 77, 78, - 79, 77, 78, 79, 76, 77, 78, 79, 76, 367, - 356, 369, 380, 363, 76, 77, 78, 79, 77, 78, - 79, 76, 380, 380, 77, 78, 79, 76, 380, 380, - 380, 77, 78, 79, 76, 77, 78, 79, 76, 380, - 370, 77, 78, 79, 371, 76, 374, 380, 77, 78, - 79, 372, 76, 373, 77, 78, 79, 76, 338, 376, - 76, 77, 78, 79, 76, 77, 78, 79, 76, 380, - 380, 76, 77, 78, 79, 380, 375, 76, 338, 77, - 78, 79, 377, 338, 77, 78, 79, 77, 78, 79, + 384, 384, 384, 384, 384, 77, 78, 79, 77, 78, + 79, 77, 78, 79, 76, 258, 77, 78, 79, 76, + 320, 314, 76, 77, 78, 79, 77, 78, 79, 76, + 384, 384, 76, 313, 315, 76, 384, 317, 384, 316, + 76, 77, 78, 79, 76, 384, 77, 78, 79, 77, + 78, 79, 321, 384, 384, 76, 77, 78, 79, 77, + 78, 79, 77, 78, 79, 318, 76, 77, 78, 79, + 76, 77, 78, 79, 319, 76, 307, 384, 76, 384, + 384, 322, 77, 78, 79, 307, 384, 76, 384, 384, + 76, 325, 384, 77, 78, 79, 323, 77, 78, 79, - 338, 77, 78, 79, 378, 77, 78, 79, 77, 78, - 79, 76, 380, 380, 77, 78, 79, 76, 380, 380, - 380, 380, 76, 379, 380, 76, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 338, 77, 78, - 79, 380, 380, 380, 77, 78, 79, 380, 380, 77, - 78, 79, 77, 78, 79, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 54, 54, 54, + 76, 326, 77, 78, 79, 77, 78, 79, 384, 76, + 384, 384, 76, 384, 77, 78, 79, 77, 78, 79, + 324, 384, 76, 384, 384, 76, 384, 77, 78, 79, + 76, 384, 384, 327, 76, 384, 77, 78, 79, 77, + 78, 79, 76, 384, 328, 76, 333, 384, 76, 77, + 78, 79, 77, 78, 79, 76, 334, 77, 78, 79, + 76, 77, 78, 79, 76, 329, 384, 330, 335, 77, + 78, 79, 77, 78, 79, 77, 78, 79, 76, 384, + 384, 336, 77, 78, 79, 76, 384, 77, 78, 79, + 337, 77, 78, 79, 384, 76, 384, 384, 338, 384, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 57, 380, 57, 380, 57, 380, 57, 66, 380, - 380, 66, 380, 66, 66, 66, 66, 66, 75, 75, - 380, 75, 75, 75, 75, 75, 75, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 126, 380, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 135, 380, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 136, 136, 136, 136, 136, 136, 136, 136, + 384, 76, 384, 384, 76, 77, 78, 79, 76, 384, + 340, 76, 77, 78, 79, 339, 342, 384, 384, 384, + 341, 76, 77, 78, 79, 384, 76, 384, 77, 78, + 79, 77, 78, 79, 76, 77, 78, 79, 77, 78, + 79, 342, 384, 76, 384, 384, 343, 76, 77, 78, + 79, 344, 76, 77, 78, 79, 76, 346, 384, 76, + 384, 77, 78, 79, 76, 384, 345, 384, 76, 384, + 77, 78, 79, 384, 77, 78, 79, 238, 76, 77, + 78, 79, 76, 77, 78, 79, 77, 78, 79, 347, + 76, 77, 78, 79, 76, 77, 78, 79, 349, 76, - 136, 145, 145, 145, 193, 380, 380, 380, 380, 193, - 193, 193, 196, 196, 196, 196, 196, 204, 204, 204, - 380, 380, 204, 251, 380, 380, 380, 380, 251, 251, - 251, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 7, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 348, 384, 350, 384, 76, 77, 78, 79, 76, 77, + 78, 79, 354, 352, 355, 213, 76, 77, 78, 79, + 384, 77, 78, 79, 76, 384, 77, 78, 79, 384, + 76, 77, 78, 79, 76, 77, 78, 79, 76, 353, + 356, 76, 358, 77, 78, 79, 384, 384, 76, 384, + 384, 77, 78, 79, 359, 357, 384, 77, 78, 79, + 384, 77, 78, 79, 76, 77, 78, 79, 77, 78, + 79, 366, 76, 384, 384, 77, 78, 79, 342, 76, + 384, 384, 76, 384, 384, 342, 384, 360, 76, 384, + 384, 77, 78, 79, 76, 384, 384, 384, 76, 77, - 380, 380, 380, 380, 380, 380, 380, 380 + 78, 79, 76, 361, 363, 367, 77, 78, 79, 77, + 78, 79, 362, 76, 384, 77, 78, 79, 76, 364, + 296, 77, 78, 79, 76, 77, 78, 79, 76, 77, + 78, 79, 76, 384, 384, 213, 369, 76, 370, 384, + 77, 78, 79, 384, 76, 77, 78, 79, 368, 76, + 384, 77, 78, 79, 76, 77, 78, 79, 371, 77, + 78, 79, 76, 384, 77, 78, 79, 372, 360, 384, + 76, 77, 78, 79, 76, 384, 77, 78, 79, 367, + 76, 77, 78, 79, 373, 76, 384, 384, 76, 77, + 78, 79, 384, 384, 76, 384, 384, 77, 78, 79, + + 375, 77, 78, 79, 374, 76, 378, 77, 78, 79, + 76, 376, 77, 78, 79, 77, 78, 79, 76, 384, + 384, 77, 78, 79, 342, 76, 384, 384, 76, 377, + 380, 76, 77, 78, 79, 384, 384, 77, 78, 79, + 76, 342, 384, 382, 379, 77, 78, 79, 76, 384, + 342, 76, 77, 78, 79, 77, 78, 79, 77, 78, + 79, 76, 381, 384, 76, 384, 384, 77, 78, 79, + 342, 76, 384, 384, 384, 77, 78, 79, 77, 78, + 79, 76, 384, 342, 384, 384, 384, 383, 77, 78, + 79, 77, 78, 79, 384, 384, 384, 384, 77, 78, + + 79, 384, 384, 384, 384, 384, 384, 384, 77, 78, + 79, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 57, 384, 57, + 384, 57, 384, 57, 66, 384, 384, 66, 384, 66, + 66, 66, 66, 66, 75, 75, 384, 75, 75, 75, + 75, 75, 75, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 129, 384, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 138, 384, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 148, 148, 148, + 197, 384, 384, 384, 384, 197, 197, 197, 200, 200, + 200, 200, 200, 208, 208, 208, 384, 384, 208, 255, + 384, 384, 384, 384, 255, 255, 255, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 7, 384, 384, 384, + + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384 } ; -static yyconst flex_int16_t yy_chk[2209] = +static yyconst flex_int16_t yy_chk[2265] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -828,241 +837,247 @@ static yyconst flex_int16_t yy_chk[2209] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 11, 9, 13, 14, 13, 13, 13, 13, 13, 13, 13, 50, - 361, 50, 81, 81, 347, 13, 14, 19, 328, 14, - 16, 51, 195, 327, 16, 195, 299, 20, 298, 297, + 365, 50, 81, 81, 351, 13, 14, 19, 332, 14, + 16, 51, 199, 331, 16, 199, 303, 20, 302, 301, - 11, 22, 296, 13, 14, 15, 15, 15, 15, 15, + 11, 22, 300, 13, 14, 15, 15, 15, 15, 15, 15, 15, 20, 22, 19, 19, 19, 15, 15, 15, - 16, 261, 15, 51, 20, 20, 20, 24, 22, 22, - 22, 260, 23, 259, 258, 15, 15, 15, 257, 24, - 256, 24, 15, 253, 251, 249, 23, 16, 16, 16, - 17, 206, 17, 17, 17, 17, 17, 17, 17, 23, - 23, 23, 17, 28, 203, 17, 24, 24, 24, 17, - 202, 201, 17, 200, 17, 199, 17, 198, 25, 193, - 17, 189, 147, 17, 25, 146, 28, 143, 142, 17, - 28, 28, 28, 141, 140, 139, 17, 132, 17, 21, + 16, 265, 15, 51, 20, 20, 20, 264, 22, 22, + 22, 263, 23, 25, 262, 15, 15, 15, 261, 25, + 260, 257, 15, 255, 253, 210, 23, 16, 16, 16, + 17, 207, 17, 17, 17, 17, 17, 17, 17, 23, + 23, 23, 17, 73, 206, 17, 25, 25, 25, 17, + 73, 205, 17, 73, 17, 148, 17, 204, 148, 24, + 17, 73, 24, 17, 203, 202, 197, 193, 150, 17, + 73, 24, 149, 24, 146, 148, 17, 73, 17, 21, - 21, 128, 126, 21, 21, 21, 21, 21, 21, 21, - 122, 25, 25, 25, 26, 26, 26, 26, 26, 26, - 26, 27, 27, 27, 27, 29, 121, 120, 21, 27, - 27, 30, 119, 30, 29, 27, 79, 78, 32, 77, - 29, 30, 71, 33, 70, 69, 30, 42, 68, 42, - 32, 59, 29, 29, 29, 21, 21, 21, 30, 30, - 30, 33, 27, 27, 27, 32, 32, 32, 34, 54, - 33, 33, 33, 35, 42, 42, 42, 36, 53, 36, - 38, 47, 34, 36, 75, 46, 38, 37, 35, 45, - 39, 44, 43, 31, 18, 34, 34, 34, 40, 39, + 21, 24, 148, 21, 21, 21, 21, 21, 21, 21, + 26, 26, 26, 26, 26, 26, 26, 28, 24, 24, + 24, 27, 27, 27, 27, 32, 145, 144, 21, 27, + 27, 143, 29, 142, 135, 27, 131, 32, 129, 125, + 28, 29, 124, 123, 28, 28, 28, 29, 122, 79, + 33, 78, 32, 32, 32, 21, 21, 21, 34, 29, + 29, 29, 27, 27, 27, 30, 77, 30, 33, 35, + 71, 70, 34, 69, 37, 30, 68, 33, 33, 33, + 30, 59, 38, 54, 35, 34, 34, 34, 38, 36, + 37, 36, 30, 30, 30, 36, 35, 35, 35, 36, - 35, 35, 35, 37, 36, 36, 36, 38, 38, 38, - 39, 75, 75, 75, 37, 37, 37, 39, 39, 39, - 41, 40, 12, 41, 7, 40, 40, 40, 6, 5, - 41, 4, 41, 3, 41, 66, 0, 0, 0, 41, - 55, 55, 55, 55, 55, 55, 0, 41, 41, 41, - 58, 58, 0, 0, 58, 58, 58, 58, 58, 58, - 58, 66, 0, 0, 55, 57, 0, 57, 57, 57, - 57, 57, 57, 57, 0, 0, 73, 57, 80, 0, - 57, 0, 0, 73, 57, 0, 73, 57, 66, 66, - 66, 0, 0, 0, 73, 57, 0, 0, 57, 80, + 40, 37, 37, 37, 39, 53, 47, 46, 45, 38, + 38, 38, 42, 39, 42, 44, 36, 36, 36, 43, + 31, 18, 12, 40, 39, 7, 6, 40, 40, 40, + 5, 39, 39, 39, 41, 4, 3, 41, 0, 42, + 42, 42, 0, 0, 41, 0, 41, 0, 41, 66, + 0, 0, 0, 41, 55, 55, 55, 55, 55, 55, + 0, 41, 41, 41, 58, 58, 0, 0, 58, 58, + 58, 58, 58, 58, 58, 66, 0, 0, 55, 57, + 0, 57, 57, 57, 57, 57, 57, 57, 75, 0, + 0, 57, 80, 0, 57, 0, 0, 0, 57, 0, - 0, 0, 0, 73, 57, 80, 80, 80, 62, 62, - 73, 57, 62, 62, 62, 62, 62, 62, 62, 67, - 67, 67, 67, 67, 67, 67, 76, 76, 76, 76, - 76, 82, 82, 0, 0, 83, 0, 0, 0, 0, - 86, 84, 76, 0, 0, 0, 86, 82, 84, 82, - 83, 85, 82, 87, 0, 85, 0, 0, 0, 0, - 76, 87, 83, 83, 83, 82, 88, 82, 84, 84, - 84, 89, 82, 86, 86, 86, 145, 91, 0, 145, - 89, 90, 85, 85, 85, 76, 0, 90, 87, 87, - 87, 91, 93, 88, 88, 88, 145, 95, 89, 89, + 0, 57, 66, 66, 66, 0, 0, 0, 0, 57, + 0, 0, 57, 80, 0, 75, 75, 75, 57, 80, + 80, 80, 62, 62, 0, 57, 62, 62, 62, 62, + 62, 62, 62, 67, 67, 67, 67, 67, 67, 67, + 76, 76, 76, 76, 76, 82, 82, 0, 208, 83, + 0, 208, 86, 0, 0, 84, 76, 0, 0, 0, + 86, 82, 84, 82, 83, 85, 82, 87, 208, 85, + 0, 0, 0, 87, 76, 208, 83, 83, 83, 82, + 88, 82, 84, 84, 84, 89, 82, 86, 86, 86, + 90, 0, 88, 89, 0, 0, 85, 85, 85, 76, - 89, 92, 0, 145, 91, 91, 91, 93, 90, 90, - 90, 92, 204, 92, 94, 204, 92, 95, 98, 93, - 93, 93, 97, 94, 95, 95, 95, 99, 92, 92, - 92, 96, 204, 96, 94, 97, 100, 0, 98, 204, - 99, 94, 94, 94, 0, 98, 98, 98, 101, 97, - 97, 97, 102, 0, 99, 99, 99, 100, 96, 96, - 96, 0, 104, 100, 100, 100, 0, 102, 103, 101, - 0, 105, 0, 0, 106, 101, 101, 101, 0, 102, - 102, 102, 104, 103, 107, 105, 0, 0, 106, 104, - 104, 104, 108, 0, 108, 103, 103, 103, 105, 105, + 87, 87, 87, 91, 0, 0, 0, 88, 88, 88, + 92, 0, 91, 93, 0, 0, 92, 90, 90, 90, + 89, 89, 89, 98, 0, 98, 96, 93, 0, 95, + 91, 91, 91, 94, 0, 96, 99, 92, 92, 92, + 93, 93, 93, 94, 95, 94, 96, 97, 94, 99, + 98, 98, 98, 96, 96, 96, 95, 95, 95, 100, + 94, 94, 94, 99, 99, 99, 0, 97, 101, 0, + 0, 102, 0, 0, 97, 97, 97, 0, 0, 100, + 103, 101, 0, 106, 0, 0, 100, 100, 100, 104, + 0, 0, 102, 0, 0, 101, 101, 101, 102, 102, - 105, 106, 106, 106, 107, 109, 0, 109, 110, 0, - 0, 107, 107, 107, 112, 0, 0, 114, 0, 108, - 108, 108, 111, 110, 0, 113, 0, 0, 0, 117, - 112, 114, 109, 109, 109, 110, 110, 110, 117, 0, - 111, 112, 112, 112, 114, 114, 114, 115, 113, 111, - 111, 111, 113, 113, 113, 116, 117, 117, 117, 118, - 0, 0, 115, 0, 0, 0, 0, 116, 0, 0, - 0, 0, 0, 0, 115, 115, 115, 118, 0, 0, - 0, 0, 116, 116, 116, 127, 118, 118, 118, 0, - 0, 127, 127, 127, 127, 127, 127, 130, 130, 130, + 102, 103, 109, 106, 104, 105, 0, 103, 103, 103, + 106, 106, 106, 107, 0, 0, 104, 104, 104, 0, + 105, 108, 109, 0, 110, 0, 0, 107, 115, 109, + 109, 109, 105, 105, 105, 108, 110, 111, 0, 111, + 107, 107, 107, 112, 115, 112, 113, 0, 108, 108, + 108, 110, 110, 110, 116, 115, 115, 115, 114, 0, + 0, 113, 121, 0, 111, 111, 111, 0, 0, 118, + 112, 112, 112, 113, 113, 113, 114, 116, 117, 0, + 121, 116, 116, 116, 118, 114, 114, 114, 119, 121, + 121, 121, 117, 120, 0, 0, 118, 118, 118, 0, - 130, 130, 130, 130, 131, 131, 131, 131, 131, 131, - 131, 136, 0, 0, 0, 0, 131, 0, 131, 0, - 0, 131, 133, 133, 133, 133, 133, 133, 133, 0, - 0, 0, 0, 137, 131, 0, 131, 136, 0, 0, - 0, 131, 134, 134, 134, 134, 134, 134, 134, 148, - 0, 0, 148, 149, 134, 0, 134, 150, 0, 134, - 137, 137, 137, 0, 136, 136, 136, 138, 138, 138, - 138, 138, 134, 0, 134, 0, 148, 148, 148, 134, - 149, 149, 149, 138, 150, 150, 150, 151, 153, 151, - 152, 0, 0, 0, 0, 0, 154, 152, 155, 0, + 119, 0, 120, 130, 0, 117, 117, 117, 0, 130, + 130, 130, 130, 130, 130, 119, 119, 119, 0, 0, + 120, 120, 120, 133, 133, 133, 133, 133, 133, 133, + 134, 134, 134, 134, 134, 134, 134, 139, 0, 0, + 0, 0, 134, 0, 134, 0, 0, 134, 136, 136, + 136, 136, 136, 136, 136, 0, 0, 0, 0, 140, + 134, 0, 134, 139, 0, 0, 0, 134, 137, 137, + 137, 137, 137, 137, 137, 151, 0, 0, 151, 152, + 137, 0, 137, 153, 0, 137, 140, 140, 140, 0, + 139, 139, 139, 141, 141, 141, 141, 141, 137, 0, - 152, 138, 153, 154, 0, 0, 0, 155, 0, 0, - 0, 156, 0, 0, 151, 151, 151, 152, 152, 152, - 157, 0, 0, 154, 154, 154, 138, 157, 158, 153, - 153, 153, 156, 158, 155, 155, 155, 160, 156, 156, - 156, 159, 0, 160, 161, 0, 0, 157, 157, 157, - 162, 0, 0, 159, 163, 158, 158, 158, 0, 0, - 0, 162, 161, 0, 160, 160, 160, 0, 159, 159, - 159, 161, 161, 161, 0, 163, 164, 0, 0, 165, - 0, 163, 163, 163, 166, 165, 0, 0, 162, 162, - 162, 164, 0, 167, 0, 0, 168, 0, 168, 172, + 137, 0, 151, 151, 151, 137, 152, 152, 152, 141, + 153, 153, 153, 154, 156, 154, 155, 0, 0, 157, + 0, 0, 158, 155, 159, 0, 155, 141, 156, 158, + 0, 0, 0, 159, 0, 0, 0, 160, 0, 0, + 154, 154, 154, 155, 155, 155, 157, 157, 157, 158, + 158, 158, 141, 0, 162, 156, 156, 156, 160, 162, + 159, 159, 159, 161, 160, 160, 160, 163, 0, 166, + 161, 164, 0, 0, 0, 165, 0, 164, 0, 163, + 166, 162, 162, 162, 167, 0, 0, 0, 0, 0, + 161, 161, 161, 165, 163, 163, 163, 170, 164, 164, - 0, 172, 166, 164, 164, 164, 165, 165, 165, 167, - 169, 166, 166, 166, 170, 0, 169, 170, 171, 0, - 167, 167, 167, 168, 168, 168, 172, 172, 172, 173, - 0, 171, 0, 174, 0, 0, 175, 169, 169, 169, - 183, 170, 170, 170, 175, 171, 171, 171, 176, 0, - 173, 0, 177, 174, 0, 176, 173, 173, 173, 174, - 183, 178, 0, 175, 175, 175, 177, 183, 183, 183, - 177, 179, 0, 0, 180, 176, 176, 176, 178, 182, - 174, 174, 174, 179, 181, 182, 0, 0, 178, 178, - 178, 0, 180, 177, 177, 177, 184, 0, 179, 179, + 164, 168, 165, 165, 165, 167, 171, 166, 166, 166, + 0, 167, 167, 167, 169, 170, 168, 172, 0, 172, + 169, 173, 171, 0, 170, 170, 170, 173, 168, 168, + 168, 0, 0, 171, 171, 171, 174, 0, 0, 174, + 175, 169, 169, 169, 172, 172, 172, 0, 173, 173, + 173, 178, 176, 175, 176, 177, 0, 0, 179, 0, + 181, 0, 0, 174, 174, 174, 179, 175, 175, 175, + 0, 178, 0, 0, 181, 0, 177, 178, 181, 176, + 176, 176, 177, 177, 177, 179, 179, 179, 180, 0, + 0, 182, 0, 0, 183, 180, 0, 0, 178, 178, - 179, 180, 180, 180, 185, 181, 182, 182, 182, 186, - 0, 181, 181, 181, 187, 0, 184, 188, 185, 186, - 0, 0, 196, 184, 184, 184, 0, 188, 0, 187, - 0, 185, 185, 185, 0, 0, 186, 186, 186, 207, - 0, 187, 187, 187, 188, 188, 188, 192, 196, 0, - 0, 207, 208, 192, 192, 192, 192, 192, 192, 197, - 197, 197, 197, 197, 197, 197, 207, 207, 207, 209, - 211, 0, 208, 210, 0, 196, 196, 196, 212, 208, - 208, 208, 213, 211, 0, 0, 0, 210, 0, 213, - 0, 0, 0, 0, 214, 0, 209, 209, 209, 216, + 178, 181, 181, 181, 0, 0, 183, 184, 182, 0, + 185, 0, 0, 187, 0, 180, 180, 180, 182, 182, + 182, 183, 183, 183, 186, 184, 0, 188, 0, 0, + 186, 185, 189, 187, 184, 184, 184, 185, 185, 185, + 187, 187, 187, 0, 0, 0, 189, 188, 190, 0, + 0, 186, 186, 186, 188, 188, 188, 191, 190, 189, + 189, 189, 200, 192, 201, 201, 201, 201, 201, 201, + 201, 0, 191, 192, 213, 190, 190, 190, 0, 0, + 212, 0, 0, 0, 191, 191, 191, 196, 200, 0, + 192, 192, 192, 196, 196, 196, 196, 196, 196, 211, - 210, 210, 210, 215, 0, 212, 212, 212, 214, 216, - 211, 211, 211, 217, 0, 215, 213, 213, 213, 218, - 0, 214, 214, 214, 219, 217, 216, 216, 216, 221, - 215, 215, 215, 220, 0, 0, 221, 219, 223, 218, - 217, 217, 217, 220, 0, 222, 218, 218, 218, 224, - 226, 219, 219, 219, 225, 0, 221, 221, 221, 232, - 220, 220, 220, 222, 229, 223, 223, 223, 226, 225, - 0, 227, 222, 222, 222, 228, 224, 224, 224, 0, - 232, 225, 225, 225, 0, 227, 230, 228, 235, 231, - 0, 229, 229, 229, 234, 226, 226, 226, 227, 227, + 212, 213, 213, 213, 214, 0, 215, 212, 212, 212, + 216, 211, 0, 219, 0, 200, 200, 200, 214, 215, + 0, 0, 217, 0, 220, 219, 211, 211, 211, 217, + 0, 214, 214, 214, 220, 218, 0, 216, 216, 216, + 219, 219, 219, 221, 0, 0, 215, 215, 215, 218, + 226, 220, 220, 220, 222, 221, 217, 217, 217, 0, + 223, 0, 218, 218, 218, 224, 0, 0, 226, 225, + 221, 221, 221, 223, 222, 224, 225, 226, 226, 226, + 227, 222, 222, 222, 228, 230, 0, 223, 223, 223, + 229, 0, 224, 224, 224, 0, 225, 225, 225, 236, - 227, 235, 228, 228, 228, 231, 230, 232, 232, 232, - 0, 233, 0, 230, 230, 230, 231, 231, 231, 233, - 236, 234, 234, 234, 237, 236, 0, 238, 235, 235, - 235, 240, 0, 0, 0, 240, 0, 239, 233, 233, - 233, 0, 241, 0, 270, 237, 270, 236, 236, 236, - 245, 237, 237, 237, 238, 238, 238, 239, 240, 240, - 240, 241, 242, 245, 239, 239, 239, 243, 242, 241, - 241, 241, 244, 270, 270, 270, 246, 245, 245, 245, - 244, 247, 0, 247, 0, 254, 0, 243, 0, 242, - 242, 242, 0, 243, 246, 0, 262, 0, 263, 244, + 231, 0, 0, 230, 0, 229, 233, 227, 227, 227, + 232, 228, 228, 228, 231, 0, 234, 229, 229, 229, + 236, 0, 232, 0, 235, 0, 0, 231, 231, 231, + 230, 230, 230, 233, 233, 233, 234, 232, 232, 232, + 235, 239, 237, 234, 234, 234, 238, 236, 236, 236, + 237, 235, 235, 235, 239, 0, 0, 240, 0, 0, + 0, 242, 240, 0, 0, 0, 241, 0, 0, 237, + 237, 237, 243, 238, 238, 238, 244, 0, 0, 245, + 244, 239, 239, 239, 240, 240, 240, 241, 242, 242, + 242, 246, 243, 241, 241, 241, 247, 246, 245, 243, - 244, 244, 262, 246, 246, 246, 0, 263, 247, 247, - 247, 254, 0, 0, 243, 243, 243, 255, 255, 255, - 255, 255, 266, 262, 262, 262, 0, 264, 0, 0, - 265, 266, 0, 255, 263, 263, 263, 264, 254, 254, - 254, 265, 0, 0, 0, 0, 267, 0, 0, 0, - 268, 255, 268, 273, 264, 264, 264, 267, 266, 266, - 266, 269, 0, 269, 272, 273, 272, 271, 265, 265, - 265, 271, 0, 267, 267, 267, 255, 268, 268, 268, - 273, 273, 273, 275, 0, 275, 276, 0, 269, 269, - 269, 272, 272, 272, 271, 271, 271, 274, 280, 0, + 243, 243, 248, 244, 244, 244, 245, 245, 245, 258, + 248, 249, 0, 0, 0, 0, 247, 0, 246, 246, + 246, 0, 247, 250, 249, 0, 251, 0, 251, 248, + 248, 248, 0, 0, 0, 258, 0, 267, 249, 249, + 249, 250, 266, 247, 247, 247, 267, 0, 266, 0, + 250, 250, 250, 251, 251, 251, 259, 259, 259, 259, + 259, 0, 258, 258, 258, 0, 268, 269, 0, 266, + 266, 266, 259, 267, 267, 267, 268, 0, 269, 0, + 270, 271, 0, 0, 272, 0, 272, 0, 0, 270, + 259, 0, 271, 268, 268, 268, 273, 274, 273, 274, - 278, 0, 0, 279, 274, 0, 281, 276, 0, 279, - 275, 275, 275, 276, 276, 276, 280, 0, 0, 278, - 0, 0, 0, 0, 274, 274, 274, 278, 278, 278, - 279, 279, 279, 281, 281, 281, 282, 283, 0, 284, - 288, 0, 282, 280, 280, 280, 284, 0, 283, 0, - 0, 285, 0, 0, 286, 0, 0, 285, 288, 0, - 0, 0, 0, 282, 282, 282, 284, 284, 284, 287, - 290, 0, 289, 0, 0, 283, 283, 283, 285, 285, - 285, 286, 286, 286, 291, 288, 288, 288, 292, 287, - 0, 290, 291, 300, 293, 0, 287, 287, 287, 289, + 0, 0, 0, 0, 0, 269, 269, 269, 271, 271, + 271, 272, 272, 272, 283, 259, 270, 270, 270, 276, + 283, 276, 277, 273, 273, 273, 274, 274, 274, 275, + 0, 0, 278, 275, 277, 279, 0, 279, 0, 278, + 285, 283, 283, 283, 280, 0, 276, 276, 276, 277, + 277, 277, 284, 0, 0, 282, 275, 275, 275, 278, + 278, 278, 279, 279, 279, 280, 290, 285, 285, 285, + 284, 280, 280, 280, 282, 286, 287, 0, 288, 0, + 0, 286, 282, 282, 282, 288, 0, 287, 0, 0, + 289, 292, 0, 290, 290, 290, 289, 284, 284, 284, - 289, 289, 300, 0, 293, 294, 0, 0, 0, 303, - 0, 291, 291, 291, 301, 292, 292, 292, 290, 290, - 290, 293, 293, 293, 295, 294, 0, 295, 301, 300, - 300, 300, 294, 294, 294, 302, 303, 303, 303, 306, - 304, 301, 301, 301, 304, 305, 0, 307, 0, 0, - 305, 295, 295, 295, 308, 302, 308, 0, 0, 306, - 309, 307, 302, 302, 302, 310, 306, 306, 306, 309, - 315, 304, 304, 304, 307, 307, 307, 305, 305, 305, - 315, 308, 308, 308, 311, 310, 0, 309, 309, 309, - 312, 0, 310, 310, 310, 313, 311, 315, 315, 315, + 291, 294, 286, 286, 286, 288, 288, 288, 0, 292, + 0, 0, 293, 0, 287, 287, 287, 289, 289, 289, + 291, 0, 294, 0, 0, 295, 0, 291, 291, 291, + 296, 0, 0, 295, 297, 0, 292, 292, 292, 293, + 293, 293, 305, 0, 297, 298, 304, 0, 306, 294, + 294, 294, 295, 295, 295, 304, 305, 296, 296, 296, + 307, 297, 297, 297, 299, 298, 0, 299, 306, 305, + 305, 305, 298, 298, 298, 306, 306, 306, 310, 0, + 0, 308, 304, 304, 304, 308, 0, 307, 307, 307, + 309, 299, 299, 299, 0, 309, 0, 0, 310, 0, - 314, 0, 312, 313, 316, 0, 0, 318, 0, 0, - 319, 311, 311, 311, 314, 322, 0, 312, 312, 312, - 320, 0, 313, 313, 313, 318, 325, 314, 314, 314, - 324, 316, 316, 316, 318, 318, 318, 319, 319, 319, - 323, 320, 322, 322, 322, 330, 323, 320, 320, 320, - 324, 326, 330, 325, 325, 325, 329, 324, 324, 324, - 0, 333, 0, 326, 331, 332, 0, 323, 323, 323, - 329, 333, 330, 330, 330, 0, 0, 332, 326, 326, - 326, 335, 0, 329, 329, 329, 336, 331, 333, 333, - 333, 331, 331, 331, 334, 335, 0, 337, 336, 0, + 0, 311, 0, 0, 315, 310, 310, 310, 312, 0, + 312, 313, 308, 308, 308, 311, 315, 0, 0, 0, + 313, 314, 309, 309, 309, 0, 320, 0, 311, 311, + 311, 315, 315, 315, 316, 312, 312, 312, 313, 313, + 313, 314, 0, 317, 0, 0, 316, 319, 314, 314, + 314, 317, 318, 320, 320, 320, 323, 319, 0, 322, + 0, 316, 316, 316, 326, 0, 318, 0, 324, 0, + 317, 317, 317, 0, 319, 319, 319, 322, 328, 318, + 318, 318, 329, 323, 323, 323, 322, 322, 322, 324, + 330, 326, 326, 326, 327, 324, 324, 324, 328, 333, - 334, 338, 0, 337, 332, 332, 332, 341, 335, 335, - 335, 339, 341, 336, 336, 336, 342, 339, 0, 343, - 0, 334, 334, 334, 337, 337, 337, 340, 338, 338, - 338, 342, 344, 340, 341, 341, 341, 343, 339, 339, - 339, 0, 348, 342, 342, 342, 343, 343, 343, 348, - 344, 345, 0, 0, 340, 340, 340, 345, 346, 344, - 344, 344, 350, 0, 346, 349, 0, 0, 353, 348, - 348, 348, 349, 0, 353, 350, 352, 0, 345, 345, - 345, 351, 0, 0, 352, 346, 346, 346, 355, 0, - 0, 0, 349, 349, 349, 353, 353, 353, 354, 0, + 327, 0, 330, 0, 337, 328, 328, 328, 334, 329, + 329, 329, 336, 333, 337, 334, 335, 330, 330, 330, + 0, 327, 327, 327, 336, 0, 333, 333, 333, 0, + 340, 337, 337, 337, 338, 334, 334, 334, 342, 335, + 338, 339, 340, 335, 335, 335, 0, 0, 341, 0, + 0, 336, 336, 336, 341, 339, 0, 340, 340, 340, + 0, 338, 338, 338, 352, 342, 342, 342, 339, 339, + 339, 352, 343, 0, 0, 341, 341, 341, 343, 344, + 0, 0, 345, 0, 0, 344, 0, 345, 346, 0, + 0, 352, 352, 352, 347, 0, 0, 0, 349, 343, - 0, 356, 350, 350, 350, 351, 355, 357, 351, 351, - 351, 352, 352, 352, 358, 355, 355, 355, 359, 354, - 358, 357, 0, 359, 362, 354, 354, 354, 356, 356, - 356, 360, 0, 0, 357, 357, 357, 363, 0, 0, - 0, 358, 358, 358, 366, 359, 359, 359, 364, 0, - 360, 362, 362, 362, 364, 365, 368, 0, 360, 360, - 360, 365, 367, 366, 363, 363, 363, 369, 367, 370, - 372, 366, 366, 366, 371, 364, 364, 364, 368, 0, - 0, 373, 365, 365, 365, 0, 369, 370, 374, 367, - 367, 367, 372, 371, 369, 369, 369, 372, 372, 372, + 343, 343, 348, 346, 349, 354, 344, 344, 344, 345, + 345, 345, 347, 350, 0, 346, 346, 346, 354, 350, + 348, 347, 347, 347, 355, 349, 349, 349, 353, 348, + 348, 348, 357, 0, 0, 353, 356, 358, 357, 0, + 350, 350, 350, 0, 356, 354, 354, 354, 355, 359, + 0, 355, 355, 355, 360, 353, 353, 353, 358, 357, + 357, 357, 362, 0, 358, 358, 358, 359, 362, 0, + 361, 356, 356, 356, 363, 0, 359, 359, 359, 363, + 366, 360, 360, 360, 361, 364, 0, 0, 367, 362, + 362, 362, 0, 0, 368, 0, 0, 361, 361, 361, - 373, 371, 371, 371, 375, 368, 368, 368, 373, 373, - 373, 374, 0, 0, 370, 370, 370, 377, 0, 0, - 0, 0, 375, 377, 0, 379, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 379, 374, 374, - 374, 0, 0, 0, 377, 377, 377, 0, 0, 375, - 375, 375, 379, 379, 379, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 384, 384, 384, + 368, 363, 363, 363, 364, 369, 372, 366, 366, 366, + 370, 369, 364, 364, 364, 367, 367, 367, 371, 0, + 0, 368, 368, 368, 371, 373, 0, 0, 372, 370, + 374, 375, 369, 369, 369, 0, 0, 370, 370, 370, + 376, 378, 0, 379, 373, 371, 371, 371, 374, 0, + 375, 377, 373, 373, 373, 372, 372, 372, 375, 375, + 375, 379, 376, 0, 378, 0, 0, 376, 376, 376, + 377, 383, 0, 0, 0, 374, 374, 374, 377, 377, + 377, 381, 0, 383, 0, 0, 0, 381, 379, 379, + 379, 378, 378, 378, 0, 0, 0, 0, 383, 383, + + 383, 0, 0, 0, 0, 0, 0, 0, 381, 381, + 381, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 385, 385, 385, 385, 385, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 389, 0, 389, + 0, 389, 0, 389, 390, 0, 0, 390, 0, 390, + 390, 390, 390, 390, 391, 391, 0, 391, 391, 391, + 391, 391, 391, 392, 392, 392, 392, 392, 392, 392, + + 392, 392, 392, 392, 392, 392, 392, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 394, 0, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 395, 0, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 397, 397, 397, + 398, 0, 0, 0, 0, 398, 398, 398, 399, 399, + 399, 399, 399, 400, 400, 400, 0, 0, 400, 401, + 0, 0, 0, 0, 401, 401, 401, 402, 402, 402, + 402, 402, 402, 402, 402, 402, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 385, 0, 385, 0, 385, 0, 385, 386, 0, - 0, 386, 0, 386, 386, 386, 386, 386, 387, 387, - 0, 387, 387, 387, 387, 387, 387, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 390, 0, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 391, 0, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 392, 392, 392, 392, 392, 392, 392, 392, - - 392, 393, 393, 393, 394, 0, 0, 0, 0, 394, - 394, 394, 395, 395, 395, 395, 395, 396, 396, 396, - 0, 0, 396, 397, 0, 0, 0, 0, 397, 397, - 397, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - - 380, 380, 380, 380, 380, 380, 380, 380 + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384 } ; static yy_state_type yy_last_accepting_state; @@ -1209,7 +1224,7 @@ ID ([A-Za-z_]|{UTF8})([A-Z.@#\[\]a-z_0-9+-]|{UTF8})* /* Note: this definition of string will work for utf8 as well, although it is a very relaxed definition */ -#line 1213 "lex.ncg.c" +#line 1228 "lex.ncg.c" #define INITIAL 0 #define ST_C_COMMENT 1 @@ -1395,7 +1410,7 @@ YY_DECL #line 168 "ncgen.l" -#line 1399 "lex.ncg.c" +#line 1414 "lex.ncg.c" if ( !(yy_init) ) { @@ -1448,13 +1463,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 381 ) + if ( yy_current_state >= 385 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 2141 ); + while ( yy_base[yy_current_state] != 2197 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1680,6 +1695,19 @@ YY_RULE_SETUP case 30: YY_RULE_SETUP #line 261 "ncgen.l" +{ +#ifdef USE_NETCDF4 + if(c_flag != 0 || binary_flag != 0) + return lexdebug(NIL); + yyerror("NIL only allowed for netcdf-4 and for -lc or -lb"); +#else + yyerror("NIL only allowed for netcdf-4 and for -lc or -lb"); +#endif + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 271 "ncgen.l" { bbClear(lextext); bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ @@ -1688,9 +1716,9 @@ YY_RULE_SETUP return lexdebug(PATH); } YY_BREAK -case 31: +case 32: YY_RULE_SETUP -#line 270 "ncgen.l" +#line 280 "ncgen.l" {struct Specialtoken* st; bbClear(lextext); bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ @@ -1701,10 +1729,10 @@ YY_RULE_SETUP return 0; } YY_BREAK -case 32: -/* rule 32 can match eol */ +case 33: +/* rule 33 can match eol */ YY_RULE_SETUP -#line 280 "ncgen.l" +#line 290 "ncgen.l" { int c; char* p; char* q; @@ -1721,9 +1749,9 @@ YY_RULE_SETUP return lexdebug(DATASETID); } YY_BREAK -case 33: +case 34: YY_RULE_SETUP -#line 296 "ncgen.l" +#line 306 "ncgen.l" { char* id; bbClear(lextext); bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ @@ -1735,9 +1763,9 @@ YY_RULE_SETUP return lexdebug(IDENT); } YY_BREAK -case 34: +case 35: YY_RULE_SETUP -#line 307 "ncgen.l" +#line 317 "ncgen.l" { /* We need to try to see what size of integer ((u)int). */ /* Technically, the user should specify, but... */ @@ -1787,9 +1815,9 @@ YY_RULE_SETUP } } YY_BREAK -case 35: +case 36: YY_RULE_SETUP -#line 356 "ncgen.l" +#line 366 "ncgen.l" { /* The number may be signed or unsigned (signed has priority) */ int slen = strlen(ncgtext); int tag = ncgtext[slen-1]; @@ -1842,9 +1870,9 @@ YY_RULE_SETUP return lexdebug(token); } YY_BREAK -case 36: +case 37: YY_RULE_SETUP -#line 408 "ncgen.l" +#line 418 "ncgen.l" { int slen = strlen(ncgtext); int tag = ncgtext[slen-1]; @@ -1885,9 +1913,9 @@ YY_RULE_SETUP return lexdebug(token); } YY_BREAK -case 37: +case 38: YY_RULE_SETUP -#line 447 "ncgen.l" +#line 457 "ncgen.l" { int c; int token = 0; @@ -1923,9 +1951,9 @@ YY_RULE_SETUP return lexdebug(token); } YY_BREAK -case 38: +case 39: YY_RULE_SETUP -#line 481 "ncgen.l" +#line 491 "ncgen.l" { if (sscanf((char*)ncgtext, "%le", &double_val) != 1) { sprintf(errstr,"bad long or double constant: %s",(char*)ncgtext); @@ -1934,9 +1962,9 @@ YY_RULE_SETUP return lexdebug(DOUBLE_CONST); } YY_BREAK -case 39: +case 40: YY_RULE_SETUP -#line 488 "ncgen.l" +#line 498 "ncgen.l" { if (sscanf((char*)ncgtext, "%e", &float_val) != 1) { sprintf(errstr,"bad float constant: %s",(char*)ncgtext); @@ -1945,34 +1973,34 @@ YY_RULE_SETUP return lexdebug(FLOAT_CONST); } YY_BREAK -case 40: -/* rule 40 can match eol */ +case 41: +/* rule 41 can match eol */ YY_RULE_SETUP -#line 495 "ncgen.l" +#line 505 "ncgen.l" { (void) sscanf((char*)&ncgtext[1],"%c",&byte_val); return lexdebug(BYTE_CONST); } YY_BREAK -case 41: +case 42: YY_RULE_SETUP -#line 499 "ncgen.l" +#line 509 "ncgen.l" { byte_val = (char) strtol((char*)&ncgtext[2], (char **) 0, 8); return lexdebug(BYTE_CONST); } YY_BREAK -case 42: +case 43: YY_RULE_SETUP -#line 503 "ncgen.l" +#line 513 "ncgen.l" { byte_val = (char) strtol((char*)&ncgtext[3], (char **) 0, 16); return lexdebug(BYTE_CONST); } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 507 "ncgen.l" +#line 517 "ncgen.l" { switch ((char)ncgtext[2]) { case 'a': byte_val = '\007'; break; /* not everyone under- @@ -1991,60 +2019,60 @@ YY_RULE_SETUP return lexdebug(BYTE_CONST); } YY_BREAK -case 44: -/* rule 44 can match eol */ +case 45: +/* rule 45 can match eol */ YY_RULE_SETUP -#line 525 "ncgen.l" +#line 535 "ncgen.l" { lineno++ ; break; } YY_BREAK -case 45: +case 46: YY_RULE_SETUP -#line 530 "ncgen.l" +#line 540 "ncgen.l" {/*initial*/ BEGIN(ST_C_COMMENT); break; } YY_BREAK -case 46: -/* rule 46 can match eol */ +case 47: +/* rule 47 can match eol */ YY_RULE_SETUP -#line 535 "ncgen.l" +#line 545 "ncgen.l" {/* continuation */ break; } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 539 "ncgen.l" +#line 549 "ncgen.l" {/* final */ BEGIN(INITIAL); break; } YY_BREAK case YY_STATE_EOF(ST_C_COMMENT): -#line 544 "ncgen.l" +#line 554 "ncgen.l" {/* final, error */ fprintf(stderr,"unterminated /**/ comment"); BEGIN(INITIAL); break; } YY_BREAK -case 48: +case 49: YY_RULE_SETUP -#line 550 "ncgen.l" +#line 560 "ncgen.l" {/* Note: this next rule will not work for UTF8 characters */ return lexdebug(ncgtext[0]) ; } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 553 "ncgen.l" +#line 563 "ncgen.l" ECHO; YY_BREAK -#line 2048 "lex.ncg.c" +#line 2076 "lex.ncg.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(TEXT): yyterminate(); @@ -2337,7 +2365,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 381 ) + if ( yy_current_state >= 385 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2365,11 +2393,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 381 ) + if ( yy_current_state >= 385 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 380); + yy_is_jam = (yy_current_state == 384); return yy_is_jam ? 0 : yy_current_state; } @@ -3043,7 +3071,7 @@ void ncgfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 553 "ncgen.l" +#line 563 "ncgen.l" static int diff --git a/ncgen/semantics.c b/ncgen/semantics.c index 01576515d..0f4506948 100644 --- a/ncgen/semantics.c +++ b/ncgen/semantics.c @@ -20,8 +20,8 @@ static void processspecials(void); static void processunlimiteddims(void); static void inferattributetype(Symbol* asym); +static void validateNIL(Symbol* sym); static void checkconsistency(void); -static void validate(void); static int tagvlentypes(Symbol* tsym); static Symbol* uniquetreelocate(Symbol* refsym, Symbol* root); @@ -53,8 +53,6 @@ processsemantics(void) processunlimiteddims(); /* check internal consistency*/ checkconsistency(); - /* do any needed additional semantic checks*/ - validate(); } /* @@ -445,6 +443,8 @@ processvars(void) if(usingclassic && j != 0) semerror(vsym->lineno,"Variable: %s: UNLIMITED must be in first dimension only",fullname(vsym)); } + /* validate uses of NIL */ + validateNIL(vsym); } } } @@ -583,29 +583,24 @@ processattributes(void) /* process global attributes*/ for(i=0;idata == NULL || asym->data->length == 0) { - asym->data = builddatalist(1); - emptystringconst(asym->lineno,&asym->data->data[asym->data->length]); - /* force type to be NC_CHAR */ - asym->typ.basetype = primsymbols[NC_CHAR]; - } if(asym->typ.basetype == NULL) inferattributetype(asym); /* fill in the typecode*/ asym->typ.typecode = asym->typ.basetype->typ.typecode; + if(asym->data->length == 0) { + /* If the attribute has a zero length, then default it; + note that it must be of type NC_CHAR */ + if(asym->typ.typecode != NC_CHAR) + semerror(asym->lineno,"Empty datalist can only be assigned to attributes of type char",fullname(asym)); + asym->data = builddatalist(1); + emptystringconst(asym->lineno,&asym->data->data[asym->data->length]); + } + validateNIL(asym); } /* process per variable attributes*/ for(i=0;idata == NULL || asym->data->length == 0) { - asym->data = builddatalist(1); - emptystringconst(asym->lineno,&asym->data->data[asym->data->length]); - /* force type to be NC_CHAR */ - asym->typ.basetype = primsymbols[NC_CHAR]; - } /* If no basetype is specified, then try to infer it; - the exception if _Fillvalue, whose type is that of the + the exception is _Fillvalue, whose type is that of the containing variable. */ if(strcmp(asym->name,specialname(_FILLVALUE_FLAG)) == 0) { @@ -622,6 +617,14 @@ processattributes(void) } /* fill in the typecode*/ asym->typ.typecode = asym->typ.basetype->typ.typecode; + if(asym->data->length == 0) { + /* If the attribute has a zero length, and is char type, then default it */ + if(asym->typ.typecode != NC_CHAR) + semerror(asym->lineno,"Empty datalist can only be assigned to attributes of type char",fullname(asym)); + asym->data = builddatalist(1); + emptystringconst(asym->lineno,&asym->data->data[asym->data->length]); + } + validateNIL(asym); } /* collect per-variable attributes per variable*/ for(i=0;ityp.basetype = basetypefor(nctype); } +#ifdef USE_NETCDF4 +/* recursive helper for validataNIL */ +static void +validateNILr(Datalist* src) +{ + int i; + for(i=0;ilength;i++) { + Constant* con = datalistith(src,i); + if(isnilconst(con)) + semerror(con->lineno,"NIL data can only be assigned to variables or attributes of type string"); + else if(islistconst(con)) /* recurse */ + validateNILr(con->value.compoundv); + } +} +#endif + +static void +validateNIL(Symbol* sym) +{ +#ifdef USE_NETCDF4 + Datalist* datalist = sym->data; + + if(sym->data == NULL || datalist->length == 0) return; + if(sym->typ.typecode == NC_STRING) return; + validateNILr(sym->data); +#endif +} + /* Find name within group structure*/ Symbol* lookupgroup(List* prefix) @@ -826,16 +857,6 @@ checkconsistency(void) } } -static void -validate(void) -{ - int i; - for(i=0;ivar.special._Fillvalue != NULL) { - } - } -} static void computeunlimitedsizes(Dimset* dimset, int dimindex, Datalist* data, int ischar) {