From fa83e2d0bd48c32d7745c9e28fdfbe850fe4292f Mon Sep 17 00:00:00 2001 From: shahramn Date: Tue, 17 Sep 2024 09:57:57 +0100 Subject: [PATCH 01/37] Dumper: Labels etc --- src/grib_dumper.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/grib_dumper.cc b/src/grib_dumper.cc index bfebdc2d3..f8d826f65 100644 --- a/src/grib_dumper.cc +++ b/src/grib_dumper.cc @@ -123,7 +123,6 @@ void grib_dump_string_array(grib_dumper* d, grib_accessor* a, const char* commen } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_label(grib_dumper* d, grib_accessor* a, const char* comment) @@ -136,7 +135,6 @@ void grib_dump_label(grib_dumper* d, grib_accessor* a, const char* comment) } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment) From 11d4f0ba6ff5d69212107c29fbd4347391ae2cd2 Mon Sep 17 00:00:00 2001 From: shahramn Date: Tue, 17 Sep 2024 11:37:39 +0100 Subject: [PATCH 02/37] Dumper: Add missing methods --- definitions/bufr/rdb_key.def | 1 + definitions/bufr/section.3.def | 31 +++++++------- src/grib_dumper.cc | 7 ---- src/grib_dumper_class_debug.cc | 75 +++++++++++++++++++++++++++++++++- tests/grib_dump_debug.sh | 6 +++ 5 files changed, 96 insertions(+), 24 deletions(-) diff --git a/definitions/bufr/rdb_key.def b/definitions/bufr/rdb_key.def index eea896d3e..a32343acb 100644 --- a/definitions/bufr/rdb_key.def +++ b/definitions/bufr/rdb_key.def @@ -1,4 +1,5 @@ # RDB stands for REPORT DATA BASE +# See https://confluence.ecmwf.int/pages/viewpage.action?pageId=24316441 unsigned[1] rdbType : dump; unsigned[1] oldSubtype: dump; diff --git a/definitions/bufr/section.3.def b/definitions/bufr/section.3.def index d223bbbb2..56fa58ad1 100644 --- a/definitions/bufr/section.3.def +++ b/definitions/bufr/section.3.def @@ -50,7 +50,7 @@ unsigned[1] reservedSection3 = 0; unsigned[2] numberOfSubsets : dump; alias ls.numberOfSubsets=numberOfSubsets; -if (section2Present && bufrHeaderCentre==98 && section2Length==52) { +if (section2Present && bufrHeaderCentre == 98 && section2Length == 52) { if ( rdbType == 2 || rdbType == 3 || rdbType == 8 || rdbType == 12 || rdbType == 30 ) { transient isSatelliteType=1; } else { @@ -69,10 +69,11 @@ if (section2Present && bufrHeaderCentre==98 && section2Length==52) { meta localLatitude2 bits(keyMore,32,25,-9000000,100000) : dump,no_copy; # This rule is taken from BUFRDC. See bufrdc_wmo/buukey.F - # Also see ECC-686 - if (oldSubtype == 255 || numberOfSubsets>255 || - ( oldSubtype>=121 && oldSubtype <=130 ) || - oldSubtype==31) { + # See ECC-686 + # and https://confluence.ecmwf.int/pages/viewpage.action?pageId=24316441 + if (oldSubtype == 255 || numberOfSubsets > 255 || + ( oldSubtype >= 121 && oldSubtype <= 130 ) || + oldSubtype == 31) { meta ls.localNumberOfObservations bits(keySat,0,16) : dump,long_type,no_copy; meta ls.satelliteID bits(keySat,16,16) : dump,long_type,no_copy; } else { @@ -114,16 +115,16 @@ meta bufrdcExpandedDescriptors bufrdc_expanded_descriptors(expandedCodes) : no_c #smart_table NAME (VALUES,FILE_NAME,MASTER_DIRECTORY,LOCAL_DIRECTORY,WIDTH_OF_CODE_IN_BITS,EXTRA_DIRECTORY,EXTRA_FILE_NAME); #Note: The WIDTH_OF_CODE_IN_BITS has to be big enough so 2^width > the highest BUFR descriptor code smart_table expandedOriginalCodes (expandedCodes,"element.table",tablesMasterDir,tablesLocalDir,18,rootTablesDir,"operators.table") :no_copy; -meta expandedAbbreviations smart_table_column(expandedOriginalCodes,0,1) : string_type,no_copy; -meta expandedTypes smart_table_column(expandedOriginalCodes,1,0) : string_type,no_copy; -meta expandedNames smart_table_column(expandedOriginalCodes,2,0) : string_type,no_copy; -meta expandedUnits smart_table_column(expandedOriginalCodes,3,0) : string_type,no_copy; -meta expandedOriginalScales smart_table_column(expandedOriginalCodes,4,0) : long_type,no_copy; -meta expandedOriginalReferences smart_table_column(expandedOriginalCodes,5,0) : long_type,no_copy; -meta expandedOriginalWidths smart_table_column(expandedOriginalCodes,6,0) : long_type,no_copy; -meta expandedCrex_units smart_table_column(expandedOriginalCodes,7,0) : long_type,no_copy; -meta expandedCrex_scales smart_table_column(expandedOriginalCodes,8,0) : long_type,no_copy; -meta expandedCrex_widths smart_table_column(expandedOriginalCodes,9,0) : long_type,no_copy; +meta expandedAbbreviations smart_table_column(expandedOriginalCodes,0,1) : string_type,no_copy; +meta expandedTypes smart_table_column(expandedOriginalCodes,1,0) : string_type,no_copy; +meta expandedNames smart_table_column(expandedOriginalCodes,2,0) : string_type,no_copy; +meta expandedUnits smart_table_column(expandedOriginalCodes,3,0) : string_type,no_copy; +meta expandedOriginalScales smart_table_column(expandedOriginalCodes,4,0) : long_type,no_copy; +meta expandedOriginalReferences smart_table_column(expandedOriginalCodes,5,0) : long_type,no_copy; +meta expandedOriginalWidths smart_table_column(expandedOriginalCodes,6,0) : long_type,no_copy; +meta expandedCrex_units smart_table_column(expandedOriginalCodes,7,0) : long_type,no_copy; +meta expandedCrex_scales smart_table_column(expandedOriginalCodes,8,0) : long_type,no_copy; +meta expandedCrex_widths smart_table_column(expandedOriginalCodes,9,0) : long_type,no_copy; position endDescriptors; section_padding section3Padding; diff --git a/src/grib_dumper.cc b/src/grib_dumper.cc index f8d826f65..6f9f48e67 100644 --- a/src/grib_dumper.cc +++ b/src/grib_dumper.cc @@ -84,7 +84,6 @@ void grib_dump_long(grib_dumper* d, grib_accessor* a, const char* comment) } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_double(grib_dumper* d, grib_accessor* a, const char* comment) @@ -97,7 +96,6 @@ void grib_dump_double(grib_dumper* d, grib_accessor* a, const char* comment) } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_string(grib_dumper* d, grib_accessor* a, const char* comment) @@ -110,7 +108,6 @@ void grib_dump_string(grib_dumper* d, grib_accessor* a, const char* comment) } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment) @@ -147,7 +144,6 @@ void grib_dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment) } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_bits(grib_dumper* d, grib_accessor* a, const char* comment) @@ -160,7 +156,6 @@ void grib_dump_bits(grib_dumper* d, grib_accessor* a, const char* comment) } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block) @@ -173,7 +168,6 @@ void grib_dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_values(grib_dumper* d, grib_accessor* a) @@ -186,7 +180,6 @@ void grib_dump_values(grib_dumper* d, grib_accessor* a) } c = c->super ? *(c->super) : NULL; } - Assert(0); } void grib_dump_header(grib_dumper* d, const grib_handle* ch) diff --git a/src/grib_dumper_class_debug.cc b/src/grib_dumper_class_debug.cc index d740e4523..ed416d019 100644 --- a/src/grib_dumper_class_debug.cc +++ b/src/grib_dumper_class_debug.cc @@ -16,7 +16,7 @@ START_CLASS_DEF CLASS = dumper IMPLEMENTS = dump_long;dump_bits - IMPLEMENTS = dump_double;dump_string + IMPLEMENTS = dump_double;dump_string;dump_string_array IMPLEMENTS = dump_bytes;dump_values IMPLEMENTS = dump_label;dump_section IMPLEMENTS = init;destroy @@ -45,6 +45,7 @@ static void dump_long (grib_dumper* d, grib_accessor* a,const char* commen static void dump_bits (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_double (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_string (grib_dumper* d, grib_accessor* a,const char* comment); +static void dump_string_array (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_bytes (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_values (grib_dumper* d, grib_accessor* a); static void dump_label (grib_dumper* d, grib_accessor* a,const char* comment); @@ -70,7 +71,7 @@ static grib_dumper_class _grib_dumper_class_debug = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ - 0, /* dump string array */ + &dump_string_array, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ @@ -381,6 +382,76 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) grib_context_free(a->context, value); } +static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment) +{ + grib_dumper_debug* self = (grib_dumper_debug*)d; + + char** values; + size_t size = 0, i = 0; + grib_context* c = NULL; + int err = 0; + int tab = 0; + long count = 0; + + if ((a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) + return; + + c = a->context; + a->value_count(&count); + if (count == 0) + return; + size = count; + if (size == 1) { + dump_string(d, a, comment); + return; + } + + values = (char**)grib_context_malloc_clear(c, size * sizeof(char*)); + if (!values) { + grib_context_log(c, GRIB_LOG_ERROR, "unable to allocate %zu bytes", size); + return; + } + + err = a->unpack_string_array(values, &size); + + // print_offset(self->dumper.out,d,a); + //print_offset(self->dumper.out, self->begin, self->theEnd); + + if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { + fprintf(self->dumper.out, " "); + fprintf(self->dumper.out, "# type %s (str) \n", a->creator->op); + } + + aliases(d, a); + if (comment) { + fprintf(self->dumper.out, " "); + fprintf(self->dumper.out, "# %s \n", comment); + } + if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { + fprintf(self->dumper.out, " "); + fprintf(self->dumper.out, "#-READ ONLY- "); + tab = 13; + } + else + fprintf(self->dumper.out, " "); + + tab++; + fprintf(self->dumper.out, "%s = {\n", a->name); + for (i = 0; i < size; i++) { + fprintf(self->dumper.out, "%-*s\"%s\",\n", (int)(tab + strlen(a->name) + 4), " ", values[i]); + } + fprintf(self->dumper.out, " }"); + + if (err) { + fprintf(self->dumper.out, " "); + fprintf(self->dumper.out, "# *** ERR=%d (%s)", err, grib_get_error_message(err)); + } + + fprintf(self->dumper.out, "\n"); + for (i=0; i $temp 2>&1 +${tools_dir}/grib_dump -Da -TB -s unpack=1 $infile > $temp 2>&1 + + # Clean up rm -f $temp From b2785b6a0f2a793ff7b7b765e9d0c56076fd9861 Mon Sep 17 00:00:00 2001 From: shahramn Date: Tue, 17 Sep 2024 12:11:04 +0100 Subject: [PATCH 03/37] Testing: Fix dump --- tests/grib_dump_debug.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/grib_dump_debug.sh b/tests/grib_dump_debug.sh index 69fdf3583..f220cea10 100755 --- a/tests/grib_dump_debug.sh +++ b/tests/grib_dump_debug.sh @@ -108,8 +108,8 @@ grep -q "unsigned reserved = MISSING (can be missing) (read-only)" $temp # Debug dump a BUFR using -TB switch infile=${data_dir}/bufr/pgps_110.bufr -${tools_dir}/grib_dump -Da -TB $infile > $temp 2>&1 -${tools_dir}/grib_dump -Da -TB -s unpack=1 $infile > $temp 2>&1 +${tools_dir}/grib_dump -Da -TB $infile > $temp +# ${tools_dir}/grib_dump -Da -TB -s unpack=1 $infile > $temp # Clean up From 5fae926992cfed973a209c314e5997658ab55618 Mon Sep 17 00:00:00 2001 From: shahramn Date: Tue, 17 Sep 2024 12:56:22 +0100 Subject: [PATCH 04/37] Data quality checks --- src/eccodes.cc | 4 ++++ src/eccodes.h | 1 + src/grib_api.h | 1 + src/grib_context.cc | 6 ++++++ 4 files changed, 12 insertions(+) diff --git a/src/eccodes.cc b/src/eccodes.cc index 2220f2eeb..227dd8f62 100644 --- a/src/eccodes.cc +++ b/src/eccodes.cc @@ -594,6 +594,10 @@ void codes_context_set_debug(grib_context* c, int mode) { grib_context_set_debug(c, mode); } +void codes_context_set_data_quality_checks(grib_context* c, int val) +{ + grib_context_set_data_quality_checks(c, val); +} void codes_context_set_memory_proc(grib_context* c, grib_malloc_proc p_malloc, grib_free_proc p_free, grib_realloc_proc p_realloc) { diff --git a/src/eccodes.h b/src/eccodes.h index c21d03545..3bf1cc6bf 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1175,6 +1175,7 @@ void codes_context_set_definitions_path(codes_context* c, const char* path); void codes_context_set_samples_path(codes_context* c, const char* path); void codes_context_set_debug(grib_context* c, int mode); +void codes_context_set_data_quality_checks(grib_context* c, int val); /** * Sets memory procedures of the context diff --git a/src/grib_api.h b/src/grib_api.h index 5bc8c1a9e..1770032c0 100644 --- a/src/grib_api.h +++ b/src/grib_api.h @@ -1172,6 +1172,7 @@ void grib_context_set_definitions_path(grib_context* c, const char* path); void grib_context_set_samples_path(grib_context* c, const char* path); void grib_context_set_debug(grib_context* c, int mode); +void grib_context_set_data_quality_checks(grib_context* c, int val); /** * Sets memory procedures of the context diff --git a/src/grib_context.cc b/src/grib_context.cc index b8d71ae0e..48c306189 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -241,6 +241,12 @@ void grib_context_set_print_proc(grib_context* c, grib_print_proc p) c->print = (p ? p : &default_print); } +void grib_context_set_data_quality_checks(grib_context* c, int val) +{ + c = c ? c : grib_context_get_default(); + c->grib_data_quality_checks = val; +} + void grib_context_set_debug(grib_context* c, int mode) { c = c ? c : grib_context_get_default(); From da08f3653acdcc2f85d0bedc248567669e148520 Mon Sep 17 00:00:00 2001 From: Robert Osinski Date: Tue, 17 Sep 2024 15:39:32 +0000 Subject: [PATCH 05/37] ECC-1914: levtype for isothermal atm parameters --- definitions/grib2/marsLevtypeConcept.def | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/definitions/grib2/marsLevtypeConcept.def b/definitions/grib2/marsLevtypeConcept.def index 4f9c8ae0b..ac1854728 100644 --- a/definitions/grib2/marsLevtypeConcept.def +++ b/definitions/grib2/marsLevtypeConcept.def @@ -8,9 +8,8 @@ 'sfc' = {typeOfFirstFixedSurface=8; typeOfSecondFixedSurface=255;} 'sfc' = {typeOfFirstFixedSurface=17; typeOfSecondFixedSurface=255;} 'sfc' = {typeOfFirstFixedSurface=18; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=20; scaleFactorOfFirstFixedSurface=-2; - scaledValueOfFirstFixedSurface=29315; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} +'o2d' = {discipline=10; typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} 'pl' = {typeOfFirstFixedSurface=100; typeOfSecondFixedSurface=255;} 'pl' = {typeOfFirstFixedSurface=100; typeOfSecondFixedSurface=100;} 'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=100; From 552b348117772305befab58aa76aab67eaa2c381 Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 18 Sep 2024 11:31:28 +0100 Subject: [PATCH 06/37] Harmonise struct names --- src/eccodes.cc | 68 +++++++++++++++++++++++++------------------------- src/eccodes.h | 4 +-- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/eccodes.cc b/src/eccodes.cc index 227dd8f62..01cec1142 100644 --- a/src/eccodes.cc +++ b/src/eccodes.cc @@ -12,11 +12,11 @@ /* Generic functions */ /******************************************************************************/ -char* codes_samples_path(const grib_context* c) +char* codes_samples_path(const codes_context* c) { return grib_samples_path(c); } -char* codes_definition_path(const grib_context* c) +char* codes_definition_path(const codes_context* c) { return grib_definition_path(c); } @@ -41,16 +41,16 @@ void codes_print_api_version(FILE* out) { grib_print_api_version(out); } -int codes_count_in_file(grib_context* c, FILE* f, int* n) +int codes_count_in_file(codes_context* c, FILE* f, int* n) { return grib_count_in_file(c, f, n); } -int codes_count_in_filename(grib_context* c, const char* filename, int* n) +int codes_count_in_filename(codes_context* c, const char* filename, int* n) { return grib_count_in_filename(c, filename, n); } -grib_context* codes_context_get_default(void) +codes_context* codes_context_get_default(void) { return grib_context_get_default(); } @@ -74,7 +74,7 @@ void codes_check(const char* call, const char* file, int line, int e, const char /* Fieldsets */ /******************************************************************************/ -grib_fieldset* codes_fieldset_new_from_files(grib_context* c, const char* filenames[], int nfiles, const char** keys, int nkeys, const char* where_string, const char* order_by_string, int* err) +grib_fieldset* codes_fieldset_new_from_files(codes_context* c, const char* filenames[], int nfiles, const char** keys, int nkeys, const char* where_string, const char* order_by_string, int* err) { return grib_fieldset_new_from_files(c, filenames, nfiles, keys, nkeys, where_string, order_by_string, err); } @@ -101,11 +101,11 @@ int codes_fieldset_count(const grib_fieldset* set) /* Indexing */ /******************************************************************************/ -grib_index* codes_index_new_from_file(grib_context* c, const char* filename, const char* keys, int* err) +grib_index* codes_index_new_from_file(codes_context* c, const char* filename, const char* keys, int* err) { return grib_index_new_from_file(c, filename, keys, err); } -grib_index* codes_index_new(grib_context* c, const char* keys, int* err) +grib_index* codes_index_new(codes_context* c, const char* keys, int* err) { return grib_index_new(c, keys, err); } @@ -117,7 +117,7 @@ int codes_index_write(grib_index* index, const char* filename) { return grib_index_write(index, filename); } -grib_index* codes_index_read(grib_context* c, const char* filename, int* err) +grib_index* codes_index_read(codes_context* c, const char* filename, int* err) { return grib_index_read(c, filename, err); } @@ -164,15 +164,15 @@ int codes_write_message(const grib_handle* h, const char* file, const char* mode { return grib_write_message(h, file, mode); } -grib_handle* codes_handle_new_from_message(grib_context* c, const void* data, size_t data_len) +grib_handle* codes_handle_new_from_message(codes_context* c, const void* data, size_t data_len) { return grib_handle_new_from_message(c, data, data_len); } -grib_handle* codes_handle_new_from_message_copy(grib_context* c, const void* data, size_t data_len) +grib_handle* codes_handle_new_from_message_copy(codes_context* c, const void* data, size_t data_len) { return grib_handle_new_from_message_copy(c, data, data_len); } -grib_handle* codes_grib_handle_new_from_samples(grib_context* c, const char* sample_name) +grib_handle* codes_grib_handle_new_from_samples(codes_context* c, const char* sample_name) { return grib_handle_new_from_samples(c, sample_name); } @@ -189,11 +189,11 @@ int codes_handle_delete(grib_handle* h) { return grib_handle_delete(h); } -grib_handle* codes_handle_new_from_partial_message_copy(grib_context* c, const void* data, size_t size) +grib_handle* codes_handle_new_from_partial_message_copy(codes_context* c, const void* data, size_t size) { return grib_handle_new_from_partial_message_copy(c, data, size); } -grib_handle* codes_handle_new_from_partial_message(grib_context* c, const void* data, size_t buflen) +grib_handle* codes_handle_new_from_partial_message(codes_context* c, const void* data, size_t buflen) { return grib_handle_new_from_partial_message(c, data, buflen); } @@ -230,23 +230,23 @@ grib_string_list* codes_grib_util_get_mars_param(const char* param_id) { return grib_util_get_mars_param(param_id); } -void codes_grib_multi_support_on(grib_context* c) +void codes_grib_multi_support_on(codes_context* c) { grib_multi_support_on(c); } -void codes_grib_multi_support_off(grib_context* c) +void codes_grib_multi_support_off(codes_context* c) { grib_multi_support_off(c); } -void codes_grib_multi_support_reset_file(grib_context* c, FILE* f) +void codes_grib_multi_support_reset_file(codes_context* c, FILE* f) { grib_multi_support_reset_file(c, f); } -grib_handle* codes_grib_handle_new_from_multi_message(grib_context* c, void** data, size_t* data_len, int* error) +grib_handle* codes_grib_handle_new_from_multi_message(codes_context* c, void** data, size_t* data_len, int* error) { return grib_handle_new_from_multi_message(c, data, data_len, error); } -grib_multi_handle* codes_grib_multi_handle_new(grib_context* c) +grib_multi_handle* codes_grib_multi_handle_new(codes_context* c) { return grib_multi_handle_new(c); } @@ -467,24 +467,24 @@ void codes_dump_action_tree(codes_context* c, FILE* f) } /* GTS, GRIBEX */ /******************************************************************************/ -void codes_gts_header_off(grib_context* c) +void codes_gts_header_off(codes_context* c) { grib_gts_header_off(c); } -void codes_gts_header_on(grib_context* c) +void codes_gts_header_on(codes_context* c) { grib_gts_header_on(c); } -void codes_gribex_mode_on(grib_context* c) +void codes_gribex_mode_on(codes_context* c) { grib_gribex_mode_on(c); } -int codes_get_gribex_mode(const grib_context* c) +int codes_get_gribex_mode(const codes_context* c) { return grib_get_gribex_mode(c); } -void codes_gribex_mode_off(grib_context* c) +void codes_gribex_mode_off(codes_context* c) { grib_gribex_mode_off(c); } @@ -577,45 +577,45 @@ void codes_get_reduced_row_p(long pl, double lon_first, double lon_last, long* n grib_get_reduced_row_p(pl, lon_first, lon_last, npoints, olon_first, olon_last); } -void codes_context_delete(grib_context* c) +void codes_context_delete(codes_context* c) { grib_context_delete(c); } -void codes_context_set_definitions_path(grib_context* c, const char* path) +void codes_context_set_definitions_path(codes_context* c, const char* path) { grib_context_set_definitions_path(c, path); } -void codes_context_set_samples_path(grib_context* c, const char* path) +void codes_context_set_samples_path(codes_context* c, const char* path) { grib_context_set_samples_path(c, path); } -void codes_context_set_debug(grib_context* c, int mode) +void codes_context_set_debug(codes_context* c, int mode) { grib_context_set_debug(c, mode); } -void codes_context_set_data_quality_checks(grib_context* c, int val) +void codes_context_set_data_quality_checks(codes_context* c, int val) { grib_context_set_data_quality_checks(c, val); } -void codes_context_set_memory_proc(grib_context* c, grib_malloc_proc p_malloc, grib_free_proc p_free, grib_realloc_proc p_realloc) +void codes_context_set_memory_proc(codes_context* c, grib_malloc_proc p_malloc, grib_free_proc p_free, grib_realloc_proc p_realloc) { grib_context_set_memory_proc(c, p_malloc, p_free, p_realloc); } -void codes_context_set_persistent_memory_proc(grib_context* c, grib_malloc_proc p_malloc, grib_free_proc p_free) +void codes_context_set_persistent_memory_proc(codes_context* c, grib_malloc_proc p_malloc, grib_free_proc p_free) { grib_context_set_persistent_memory_proc(c, p_malloc, p_free); } -void codes_context_set_buffer_memory_proc(grib_context* c, grib_malloc_proc p_malloc, grib_free_proc p_free, grib_realloc_proc p_realloc) +void codes_context_set_buffer_memory_proc(codes_context* c, grib_malloc_proc p_malloc, grib_free_proc p_free, grib_realloc_proc p_realloc) { grib_context_set_buffer_memory_proc(c, p_malloc, p_free, p_realloc); } -void codes_context_set_print_proc(grib_context* c, grib_print_proc p_print) +void codes_context_set_print_proc(codes_context* c, grib_print_proc p_print) { grib_context_set_print_proc(c, p_print); } -void codes_context_set_logging_proc(grib_context* c, grib_log_proc p_log) +void codes_context_set_logging_proc(codes_context* c, grib_log_proc p_log) { grib_context_set_logging_proc(c, p_log); } diff --git a/src/eccodes.h b/src/eccodes.h index 3bf1cc6bf..782542a24 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1174,8 +1174,8 @@ void codes_context_set_definitions_path(codes_context* c, const char* path); */ void codes_context_set_samples_path(codes_context* c, const char* path); -void codes_context_set_debug(grib_context* c, int mode); -void codes_context_set_data_quality_checks(grib_context* c, int val); +void codes_context_set_debug(codes_context* c, int mode); +void codes_context_set_data_quality_checks(codes_context* c, int val); /** * Sets memory procedures of the context From bdbf4ba3bfac860efdcd74af33dbaa66968e7daf Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 18 Sep 2024 14:15:39 +0100 Subject: [PATCH 07/37] CMake: Update note re Python bindings --- CMakeLists.txt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 03ec9e2a7..84f1ab2dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -517,11 +517,8 @@ ecbuild_info(" | ecCodes version ${eccodes_VERSION} |") ecbuild_info(" +--------------------------+") ecbuild_info("") -ecbuild_info(" +--------------------------------------+") -ecbuild_info(" | Please note: |") -ecbuild_info(" | For Python3 support, first install |") -ecbuild_info(" | ecCodes and then install the Python |") -ecbuild_info(" | bindings from PyPI with: |") -ecbuild_info(" | $ pip3 install eccodes |") -ecbuild_info(" +--------------------------------------+") +ecbuild_info("Please note:") +ecbuild_info(" For Python3 support, you must install the Python bindings.") +ecbuild_info(" See:") +ecbuild_info(" https://confluence.ecmwf.int/display/ECC/ecCodes+installation") ecbuild_info("") From 97d5e44d5a710562d5186648e28fcb8a356a8b6b Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 18 Sep 2024 14:25:02 +0100 Subject: [PATCH 08/37] Compiler warnings --- src/grib_iterator_class_gen.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grib_iterator_class_gen.cc b/src/grib_iterator_class_gen.cc index 7124e8cf9..7a8ad1f7b 100644 --- a/src/grib_iterator_class_gen.cc +++ b/src/grib_iterator_class_gen.cc @@ -108,7 +108,7 @@ int transform_iterator_data(grib_context* context, double* data, { double* data2; double *pData0, *pData1, *pData2; - unsigned long ix, iy; + long ix, iy; if (!iScansNegatively && jScansPositively && !jPointsAreConsecutive && !alternativeRowScanning) { /* Already +i and +j. No need to change */ From b605be1e37bcd0007379e38b5e8755dcf5d81aa9 Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 18 Sep 2024 14:25:19 +0100 Subject: [PATCH 09/37] Accessor: Remove unused argument --- src/accessor/grib_accessor_class_bufr_data_array.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/accessor/grib_accessor_class_bufr_data_array.cc b/src/accessor/grib_accessor_class_bufr_data_array.cc index b0b0dc50a..dcc41c41c 100644 --- a/src/accessor/grib_accessor_class_bufr_data_array.cc +++ b/src/accessor/grib_accessor_class_bufr_data_array.cc @@ -835,8 +835,7 @@ static int encode_double_value(grib_context* c, grib_buffer* buff, long* pos, bu return err; } -static int encode_string_value(grib_context* c, grib_buffer* buff, long* pos, bufr_descriptor* bd, - grib_accessor_bufr_data_array_t* self, char* sval) +static int encode_string_value(grib_context* c, grib_buffer* buff, long* pos, bufr_descriptor* bd, char* sval) { int err = 0; int len; @@ -845,7 +844,7 @@ static int encode_string_value(grib_context* c, grib_buffer* buff, long* pos, bu grib_buffer_set_ulength_bits(c, buff, buff->ulength_bits + bd->width); err = grib_encode_string(buff->data, pos, len, sval); if (err) { - grib_context_log(c, GRIB_LOG_ERROR, "encode_string_value: %s. Failed to encode '%s'", bd->shortName, sval); + grib_context_log(c, GRIB_LOG_ERROR, "%s: %s. Failed to encode '%s'", __func__, bd->shortName, sval); } return err; @@ -1151,7 +1150,7 @@ static int encode_new_element(grib_context* c, grib_accessor_bufr_data_array_t* grib_sarray_delete(c, stringValues); } else { - err = encode_string_value(c, buff, pos, bd, self, csval); + err = encode_string_value(c, buff, pos, bd, csval); grib_context_free(c, csval); } } @@ -1273,7 +1272,7 @@ static int encode_element(grib_context* c, grib_accessor_bufr_data_array_t* self grib_context_log(c, GRIB_LOG_ERROR, "encode_element '%s': Invalid index %d", bd->shortName, idx); return GRIB_INVALID_ARGUMENT; } - err = encode_string_value(c, buff, pos, bd, self, self->stringValues->v[idx]->v[0]); + err = encode_string_value(c, buff, pos, bd, self->stringValues->v[idx]->v[0]); } } else { From 3ac776e7ecfd29c19de5b07794449ade6673339c Mon Sep 17 00:00:00 2001 From: shahramn Date: Wed, 18 Sep 2024 14:57:37 +0100 Subject: [PATCH 10/37] ECC-1918: GRIB2: Modify tile template in preparation for use by On-Demand DT --- .../grib2/templates/template.4.generalised_tile.def | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/definitions/grib2/templates/template.4.generalised_tile.def b/definitions/grib2/templates/template.4.generalised_tile.def index e10f491c2..5eb4be333 100644 --- a/definitions/grib2/templates/template.4.generalised_tile.def +++ b/definitions/grib2/templates/template.4.generalised_tile.def @@ -40,6 +40,7 @@ alias nTileAtt=numberOfUsedTileAttributesForTileAttributeCombination; alias tile.nTileAtt=nTileAtt; alias mars.tile=typeOfTile; -alias mars.tileAttribute=tileAttribute; -transient paramtype = "tile"; -alias mars.paramType=paramtype; +alias mars.tileattribute=tileAttribute; +constant paramTypeTile = "tile"; +unalias mars.paramtype; +alias mars.paramtype=paramTypeTile; From c9f18bc76c473ea80af1d7d1e8691b595c6d358e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 18 Sep 2024 15:15:42 +0000 Subject: [PATCH 11/37] ECC-1919: GRIB2: Additional parameters for On-Demand DT --- definitions/grib2/name.def | 42 +++++++++++++++++++++++++++++++++ definitions/grib2/paramId.def | 42 +++++++++++++++++++++++++++++++++ definitions/grib2/shortName.def | 42 +++++++++++++++++++++++++++++++++ definitions/grib2/units.def | 42 +++++++++++++++++++++++++++++++++ 4 files changed, 168 insertions(+) diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def index 3ac979f33..ddb281fe0 100644 --- a/definitions/grib2/name.def +++ b/definitions/grib2/name.def @@ -4079,6 +4079,27 @@ parameterNumber = 148 ; typeOfFirstFixedSurface = 1 ; } +#Radar reflectivity +'Radar reflectivity' = { + discipline = 0 ; + parameterCategory = 16 ; + parameterNumber = 4 ; + } +#Pressure at cloud ceiling +'Pressure at cloud ceiling' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 19 ; + scaledValueOfFirstFixedSurface = 50 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#Visibility through precipitation +'Visibility through precipitation' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + } #Burned area 'Burned area' = { discipline = 2 ; @@ -5566,6 +5587,13 @@ parameterNumber = 23 ; typeOfStatisticalProcessing = 0 ; } +#Time-mean visibility through precipitation +'Time-mean visibility through precipitation' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 0 ; + } #Time-maximum volumetric soil moisture 'Time-maximum volumetric soil moisture' = { discipline = 2 ; @@ -5602,6 +5630,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 2 ; } +#Time-maximum visibility through precipitation +'Time-maximum visibility through precipitation' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 2 ; + } #Time-minimum volumetric soil moisture 'Time-minimum volumetric soil moisture' = { discipline = 2 ; @@ -5645,6 +5680,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 3 ; } +#Time-minimum visibility through precipitation +'Time-minimum visibility through precipitation' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 3 ; + } #Time-standard-deviation volumetric soil moisture 'Time-standard-deviation volumetric soil moisture' = { discipline = 2 ; diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def index bf4f0fd51..c1767469a 100644 --- a/definitions/grib2/paramId.def +++ b/definitions/grib2/paramId.def @@ -4079,6 +4079,27 @@ parameterNumber = 148 ; typeOfFirstFixedSurface = 1 ; } +#Radar reflectivity +'231066' = { + discipline = 0 ; + parameterCategory = 16 ; + parameterNumber = 4 ; + } +#Pressure at cloud ceiling +'231067' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 19 ; + scaledValueOfFirstFixedSurface = 50 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#Visibility through precipitation +'231068' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + } #Burned area '232000' = { discipline = 2 ; @@ -5566,6 +5587,13 @@ parameterNumber = 23 ; typeOfStatisticalProcessing = 0 ; } +#Time-mean visibility through precipitation +'235382' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 0 ; + } #Time-maximum volumetric soil moisture '237077' = { discipline = 2 ; @@ -5602,6 +5630,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 2 ; } +#Time-maximum visibility through precipitation +'237382' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 2 ; + } #Time-minimum volumetric soil moisture '238077' = { discipline = 2 ; @@ -5645,6 +5680,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 3 ; } +#Time-minimum visibility through precipitation +'238382' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 3 ; + } #Time-standard-deviation volumetric soil moisture '239077' = { discipline = 2 ; diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def index 13c68c8a1..5c0607a7b 100644 --- a/definitions/grib2/shortName.def +++ b/definitions/grib2/shortName.def @@ -4079,6 +4079,27 @@ parameterNumber = 148 ; typeOfFirstFixedSurface = 1 ; } +#Radar reflectivity +'rare' = { + discipline = 0 ; + parameterCategory = 16 ; + parameterNumber = 4 ; + } +#Pressure at cloud ceiling +'pcdc' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 19 ; + scaledValueOfFirstFixedSurface = 50 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#Visibility through precipitation +'visp' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + } #Burned area 'fba' = { discipline = 2 ; @@ -5566,6 +5587,13 @@ parameterNumber = 23 ; typeOfStatisticalProcessing = 0 ; } +#Time-mean visibility through precipitation +'avg_visp' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 0 ; + } #Time-maximum volumetric soil moisture 'max_vsw' = { discipline = 2 ; @@ -5602,6 +5630,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 2 ; } +#Time-maximum visibility through precipitation +'max_visp' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 2 ; + } #Time-minimum volumetric soil moisture 'min_vsw' = { discipline = 2 ; @@ -5645,6 +5680,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 3 ; } +#Time-minimum visibility through precipitation +'min_visp' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 3 ; + } #Time-standard-deviation volumetric soil moisture 'std_vsw' = { discipline = 2 ; diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def index 535b1caae..20e3a987b 100644 --- a/definitions/grib2/units.def +++ b/definitions/grib2/units.def @@ -4079,6 +4079,27 @@ parameterNumber = 148 ; typeOfFirstFixedSurface = 1 ; } +#Radar reflectivity +'dB' = { + discipline = 0 ; + parameterCategory = 16 ; + parameterNumber = 4 ; + } +#Pressure at cloud ceiling +'Pa' = { + discipline = 0 ; + parameterCategory = 3 ; + parameterNumber = 0 ; + typeOfFirstFixedSurface = 19 ; + scaledValueOfFirstFixedSurface = 50 ; + scaleFactorOfFirstFixedSurface = 0 ; + } +#Visibility through precipitation +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + } #Burned area '%' = { discipline = 2 ; @@ -5566,6 +5587,13 @@ parameterNumber = 23 ; typeOfStatisticalProcessing = 0 ; } +#Time-mean visibility through precipitation +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 0 ; + } #Time-maximum volumetric soil moisture 'm**3 m**-3' = { discipline = 2 ; @@ -5602,6 +5630,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 2 ; } +#Time-maximum visibility through precipitation +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 2 ; + } #Time-minimum volumetric soil moisture 'm**3 m**-3' = { discipline = 2 ; @@ -5645,6 +5680,13 @@ typeOfSecondFixedSurface = 8 ; typeOfStatisticalProcessing = 3 ; } +#Time-minimum visibility through precipitation +'m' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 51 ; + typeOfStatisticalProcessing = 3 ; + } #Time-standard-deviation volumetric soil moisture 'm**3 m**-3' = { discipline = 2 ; From 8d54d1b2f656d22d5b4c62b3940a6e763de8df99 Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 19 Sep 2024 13:10:38 +0100 Subject: [PATCH 12/37] Fortran: Data quality checks --- fortran/eccodes_f90_tail.f90 | 6 ++++++ fortran/grib_api_externals.h | 2 +- fortran/grib_f90_tail.f90 | 6 ++++++ fortran/grib_fortran.cc | 7 +++++++ fortran/grib_fortran_prototypes.h | 1 + 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/fortran/eccodes_f90_tail.f90 b/fortran/eccodes_f90_tail.f90 index 4e7a951e9..14dad7118 100644 --- a/fortran/eccodes_f90_tail.f90 +++ b/fortran/eccodes_f90_tail.f90 @@ -2786,6 +2786,12 @@ call grib_set_debug(dmode) end subroutine codes_set_debug + !> Set data quality check value (0, 1 or 2) + subroutine codes_set_data_quality_checks(val) + integer(kind=kindOfInt), intent(in) :: val + call grib_set_data_quality_checks(val) + end subroutine codes_set_data_quality_checks + !> Set the definition path diff --git a/fortran/grib_api_externals.h b/fortran/grib_api_externals.h index fd3d6c10a..496143c1b 100644 --- a/fortran/grib_api_externals.h +++ b/fortran/grib_api_externals.h @@ -79,7 +79,7 @@ integer, external :: grib_f_set_int, grib_f_set_int_array, & integer, external :: grib_f_get_message_size, grib_f_copy_message, grib_f_count_in_file integer, external :: grib_f_write, grib_f_multi_write, grib_f_multi_append integer, external :: grib_f_clone, grib_f_copy_namespace -external :: grib_f_check , grib_f_set_debug +external :: grib_f_check , grib_f_set_debug, grib_f_set_data_quality_checks integer, external :: grib_f_util_sections_copy integer, external :: grib_f_set_definitions_path, grib_f_set_samples_path integer, external :: grib_f_julian_to_datetime, grib_f_datetime_to_julian, grib_f_copy_key diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90 index ffd5b598c..385c93b9e 100644 --- a/fortran/grib_f90_tail.f90 +++ b/fortran/grib_f90_tail.f90 @@ -3211,6 +3211,12 @@ call grib_f_set_debug(dmode) end subroutine grib_set_debug + !> Set data quality check value (0, 1 or 2) + subroutine grib_set_data_quality_checks(val) + integer(kind=kindOfInt), intent(in) :: val + call grib_f_set_data_quality_checks(val) + end subroutine grib_set_data_quality_checks + !> Set the definition path !> diff --git a/fortran/grib_fortran.cc b/fortran/grib_fortran.cc index fd0a0e726..48807eea6 100644 --- a/fortran/grib_fortran.cc +++ b/fortran/grib_fortran.cc @@ -2875,6 +2875,13 @@ void grib_f_set_debug_(int* dmode) grib_context* c = grib_context_get_default(); grib_context_set_debug(c, *dmode); } +/*****************************************************************************/ +void grib_f_set_data_quality_checks_(int* val) +{ + Assert(val); + grib_context* c = grib_context_get_default(); + grib_context_set_data_quality_checks(c, *val); +} /*****************************************************************************/ int grib_f_set_definitions_path_(char* path, int len) diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h index 499ed6237..8fb2f240f 100644 --- a/fortran/grib_fortran_prototypes.h +++ b/fortran/grib_fortran_prototypes.h @@ -310,6 +310,7 @@ int codes_f_bufr_keys_iterator_new_(int* gid,int* iterid); int grib_f_read_file_(int* fid, void* buffer, size_t* nbytes); int codes_f_bufr_keys_iterator_delete_(int* iterid); void grib_f_set_debug_(int* mode); +void grib_f_set_data_quality_checks_(int* val); int grib_f_set_definitions_path_(char* path, int len); int grib_f_read_any_from_file_(int* fid, void* buffer, size_t* nbytes); int any_f_new_from_file_(int* fid, int* gid); From 96975b51563078a20e93081c98744d5f97c2bced Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 19 Sep 2024 13:10:50 +0100 Subject: [PATCH 13/37] Testing: Data quality checks --- tests/unit_tests.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/unit_tests.cc b/tests/unit_tests.cc index 16e00394c..faabd91c8 100644 --- a/tests/unit_tests.cc +++ b/tests/unit_tests.cc @@ -422,6 +422,16 @@ static void test_gts_header_mode() Assert(c->gts_header_on == 0); } +static void test_data_quality_checks() +{ + grib_context* c = grib_context_get_default(); + printf("Running %s ...\n", __func__); + + grib_context_set_data_quality_checks(c, 1);//warning + grib_context_set_data_quality_checks(c, 2);//error + grib_context_set_data_quality_checks(c, 0);//no checks +} + static void test_bufr_multi_element_constant_arrays() { grib_context* c = grib_context_get_default(); @@ -859,6 +869,7 @@ int main(int argc, char** argv) test_gribex_mode(); test_gts_header_mode(); test_bufr_multi_element_constant_arrays(); + test_data_quality_checks(); test_concept_condition_strings(); From aa27ff9825c54641bf350fb5ad9553f934396761 Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 19 Sep 2024 13:11:09 +0100 Subject: [PATCH 14/37] Data quality checks --- src/grib_context.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/grib_context.cc b/src/grib_context.cc index 48c306189..25d23586d 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -244,6 +244,10 @@ void grib_context_set_print_proc(grib_context* c, grib_print_proc p) void grib_context_set_data_quality_checks(grib_context* c, int val) { c = c ? c : grib_context_get_default(); + // If val == 1, failure results in an error + // If val == 2, failure results in a warning + Assert(val == 0 || val == 1 || val == 2); + c->grib_data_quality_checks = val; } From b2168380a93451b5fd9cb8865e9aaf67461ed70b Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 19 Sep 2024 13:37:57 +0100 Subject: [PATCH 15/37] Data quality checks comments --- src/grib_context.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/grib_context.cc b/src/grib_context.cc index 25d23586d..d7dc37f24 100644 --- a/src/grib_context.cc +++ b/src/grib_context.cc @@ -244,6 +244,7 @@ void grib_context_set_print_proc(grib_context* c, grib_print_proc p) void grib_context_set_data_quality_checks(grib_context* c, int val) { c = c ? c : grib_context_get_default(); + // If val == 0, disable data quality checks // If val == 1, failure results in an error // If val == 2, failure results in a warning Assert(val == 0 || val == 1 || val == 2); From 93f944310703a60ed8dd0c36ff34fe786049d136 Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 19 Sep 2024 14:25:48 +0100 Subject: [PATCH 16/37] Fortran: Data quality checks test --- examples/F90/codes_dump.f90 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/F90/codes_dump.f90 b/examples/F90/codes_dump.f90 index 84f04f668..97f8bed95 100644 --- a/examples/F90/codes_dump.f90 +++ b/examples/F90/codes_dump.f90 @@ -31,8 +31,10 @@ program codes_dump_test if (iret == CODES_END_OF_FILE) exit call codes_set_debug(0) + call codes_set_data_quality_checks(1) call codes_dump(msgid) call codes_set_debug(1) + call codes_set_data_quality_checks(0) call codes_release(msgid) From 53273c6bdb63df6bbcaa112bfc303680d91f9c06 Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 19 Sep 2024 14:43:17 +0100 Subject: [PATCH 17/37] Definitions: Cleanup --- definitions/grib1/data.grid_simple_matrix.def | 2 - definitions/grib1/gds_not_present_bitmap.def | 9 +-- definitions/grib1/grid_definition_192.78.def | 6 +- definitions/grib1/grid_definition_193.98.def | 10 +-- definitions/grib1/predefined_grid.def | 10 +-- definitions/grib2/mars_labeling.def | 64 ++++++++++--------- 6 files changed, 51 insertions(+), 50 deletions(-) diff --git a/definitions/grib1/data.grid_simple_matrix.def b/definitions/grib1/data.grid_simple_matrix.def index ae785ed71..b003be853 100644 --- a/definitions/grib1/data.grid_simple_matrix.def +++ b/definitions/grib1/data.grid_simple_matrix.def @@ -114,7 +114,6 @@ if(matrixOfValues == 0) # From GRIBEX: # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -# ! ! # ! This is the WMO definition, but it is entirely ! # ! inadequate when secondary bit maps are present ! # ! eg 3x3 global grid with a matrix of values ! @@ -129,7 +128,6 @@ if(matrixOfValues == 0) # ! missing'). ! # ! This definition will accommodate a 1x1 ! # ! degree global grid. ! -# ! ! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # constant datumSize = NC*NR; diff --git a/definitions/grib1/gds_not_present_bitmap.def b/definitions/grib1/gds_not_present_bitmap.def index c654b3cbc..f4efc0f5c 100644 --- a/definitions/grib1/gds_not_present_bitmap.def +++ b/definitions/grib1/gds_not_present_bitmap.def @@ -10,10 +10,11 @@ transient numberOfUnusedBitsAtEndOfSection3 = 0 : read_only; transient tableReference = 0; #position offsetBeforeBitmap; -meta bitmap gds_not_present_bitmap( missingValue,numberOfValues, - numberOfPoints, - latitudeOfFirstGridPoint, - Ni,numberOfUnusedBitsAtEndOfSection3) : read_only; +meta bitmap gds_not_present_bitmap( + missingValue,numberOfValues, + numberOfPoints, + latitudeOfFirstGridPoint, + Ni,numberOfUnusedBitsAtEndOfSection3) : read_only; #position offsetAfterBitmap; #padtoeven padding_sec3_1(offsetSection3,section3Length); diff --git a/definitions/grib1/grid_definition_192.78.def b/definitions/grib1/grid_definition_192.78.def index c4689a99a..c6c524b70 100644 --- a/definitions/grib1/grid_definition_192.78.def +++ b/definitions/grib1/grid_definition_192.78.def @@ -40,6 +40,6 @@ transient numberOfPoints= nd *(Ni + 1) * (Ni + 1); alias numberOfDataPoints=numberOfPoints; meta numberOfValues -number_of_values(values,bitsPerValue,numberOfDataPoints, - bitmapPresent,bitmap,numberOfCodedValues) : dump; - +number_of_values( + values,bitsPerValue,numberOfDataPoints, + bitmapPresent,bitmap,numberOfCodedValues) : dump; diff --git a/definitions/grib1/grid_definition_193.98.def b/definitions/grib1/grid_definition_193.98.def index 534c51646..9578e4287 100644 --- a/definitions/grib1/grid_definition_193.98.def +++ b/definitions/grib1/grid_definition_193.98.def @@ -79,11 +79,11 @@ if(missing(Ni)){ nearest latlon_reduced(values,radius,Nj,pl); } else { transient iteratorDisableUnrotate = 0 : hidden; # ECC-808 - iterator latlon(numberOfPoints,missingValue,values,longitudeFirstInDegrees,iInc , - Ni,Nj,iScansNegatively , - latitudeFirstInDegrees,DjInDegrees,jScansPositively,jPointsAreConsecutive, - isRotatedGrid, angleOfRotation, - latitudeOfSouthernPoleInDegrees,longitudeOfSouthernPoleInDegrees); + iterator latlon(numberOfPoints,missingValue,values,longitudeFirstInDegrees,iInc, + Ni,Nj,iScansNegatively, + latitudeFirstInDegrees,DjInDegrees,jScansPositively,jPointsAreConsecutive, + isRotatedGrid, angleOfRotation, + latitudeOfSouthernPoleInDegrees,longitudeOfSouthernPoleInDegrees); nearest regular(values,radius,Ni,Nj); } meta latLonValues latlonvalues(values); diff --git a/definitions/grib1/predefined_grid.def b/definitions/grib1/predefined_grid.def index 02a6994ad..e42048a30 100644 --- a/definitions/grib1/predefined_grid.def +++ b/definitions/grib1/predefined_grid.def @@ -24,9 +24,9 @@ constant dataRepresentationType = 0; # (according to data representation type - octet 6 above) # grib 1 -> 2 -constant gridDefinitionTemplateNumber = 0; +constant gridDefinitionTemplateNumber = 0; -# START 1/grid_definition.latitude_longitude_grid ---------------------------------------------------------------------- +# START 1/grid_definition.latitude_longitude_grid # GRID DEFINITION latitude/longitude grid (or equidistant cylindrical) alias numberOfPointsAlongAParallel=Ni; @@ -122,6 +122,6 @@ constant tableReference = 0; #position offsetBeforeBitmap; # meta bitmap gds_not_present_bitmap( missingValue,numberOfValues, -# numberOfPoints, -# latitudeOfFirstGridPoint, -# Ni,numberOfUnusedBitsAtEndOfSection3) : read_only; +# numberOfPoints, +# latitudeOfFirstGridPoint, +# Ni,numberOfUnusedBitsAtEndOfSection3) : read_only; diff --git a/definitions/grib2/mars_labeling.def b/definitions/grib2/mars_labeling.def index 6905210ce..ad51ad962 100644 --- a/definitions/grib2/mars_labeling.def +++ b/definitions/grib2/mars_labeling.def @@ -1,39 +1,42 @@ # (C) Copyright 2005- ECMWF. -codetable[2] marsClass "mars/class.table" = "od" : dump,string_type,lowercase; +codetable[2] marsClass "mars/class.table" = "od" : dump,string_type,lowercase; codetable[2] marsType "mars/type.table" = "an" : dump,string_type,no_fail,lowercase; -codetable[2] marsStream "mars/stream.table" = "oper" : dump,string_type,lowercase ; +codetable[2] marsStream "mars/stream.table" = "oper" : dump,string_type,lowercase; ksec1expver[4] experimentVersionNumber = "0001" : dump; -meta class g2_mars_labeling(0,marsClass, - marsType, - marsStream, - experimentVersionNumber, - typeOfProcessedData, - productDefinitionTemplateNumber, - stepType, - derivedForecast, - typeOfGeneratingProcess); +meta class g2_mars_labeling( + 0,marsClass, + marsType, + marsStream, + experimentVersionNumber, + typeOfProcessedData, + productDefinitionTemplateNumber, + stepType, + derivedForecast, + typeOfGeneratingProcess); -meta type g2_mars_labeling(1,marsClass, - marsType, - marsStream, - experimentVersionNumber, - typeOfProcessedData, - productDefinitionTemplateNumber, - stepType, - derivedForecast, - typeOfGeneratingProcess); +meta type g2_mars_labeling( + 1,marsClass, + marsType, + marsStream, + experimentVersionNumber, + typeOfProcessedData, + productDefinitionTemplateNumber, + stepType, + derivedForecast, + typeOfGeneratingProcess); -meta stream g2_mars_labeling(2,marsClass, - marsType, - marsStream, - experimentVersionNumber, - typeOfProcessedData, - productDefinitionTemplateNumber, - stepType, - derivedForecast, - typeOfGeneratingProcess); +meta stream g2_mars_labeling( + 2,marsClass, + marsType, + marsStream, + experimentVersionNumber, + typeOfProcessedData, + productDefinitionTemplateNumber, + stepType, + derivedForecast, + typeOfGeneratingProcess); alias ls.dataType = marsType; @@ -41,5 +44,4 @@ alias mars.class = class; alias mars.type = type; alias mars.stream = stream; alias mars.expver = experimentVersionNumber; - -alias mars.domain = globalDomain; # For now... +alias mars.domain = globalDomain; # For now... From 344d9ef17b41a90b081ffc47ae8738f3e3595bc3 Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 19 Sep 2024 16:38:26 +0100 Subject: [PATCH 18/37] ECC-1919: Fix type of level --- definitions/grib2/marsLevtypeConcept.def | 131 ++++++++++++----------- definitions/grib2/typeOfLevelConcept.def | 1 + 2 files changed, 67 insertions(+), 65 deletions(-) diff --git a/definitions/grib2/marsLevtypeConcept.def b/definitions/grib2/marsLevtypeConcept.def index ac1854728..5d1d69d85 100644 --- a/definitions/grib2/marsLevtypeConcept.def +++ b/definitions/grib2/marsLevtypeConcept.def @@ -1,69 +1,70 @@ # Concept marsLevtype -'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=8;} -'o2d' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=9;} -'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=162;} -'sfc' = {typeOfFirstFixedSurface=2; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=7; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=8; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=17; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=18; typeOfSecondFixedSurface=255;} -'o2d' = {discipline=10; typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} -'pl' = {typeOfFirstFixedSurface=100; typeOfSecondFixedSurface=255;} -'pl' = {typeOfFirstFixedSurface=100; typeOfSecondFixedSurface=100;} -'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=100; - scaleFactorOfSecondFixedSurface=0; scaledValueOfSecondFixedSurface=80000;} -'sfc' = {typeOfFirstFixedSurface=100; scaleFactorOfFirstFixedSurface=0; scaledValueOfFirstFixedSurface=80000; - typeOfSecondFixedSurface=100; scaleFactorOfSecondFixedSurface=0; scaledValueOfSecondFixedSurface=45000;} -'sfc' = {typeOfFirstFixedSurface=100; scaleFactorOfFirstFixedSurface=0; - scaledValueOfFirstFixedSurface=45000; typeOfSecondFixedSurface=8;} -'sfc' = {typeOfFirstFixedSurface=101; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=102; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=103; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=103; typeOfSecondFixedSurface=103;} -'ml' = {typeOfFirstFixedSurface=105; typeOfSecondFixedSurface=255;} -'ml' = {typeOfFirstFixedSurface=105; typeOfSecondFixedSurface=105;} -'sfc' = {typeOfFirstFixedSurface=106; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=106;typeOfSecondFixedSurface=106;} -'pt' = {typeOfFirstFixedSurface=107; typeOfSecondFixedSurface=255;} -'pt' = {typeOfFirstFixedSurface=107; typeOfSecondFixedSurface=107;} -'pv' = {typeOfFirstFixedSurface=109; typeOfSecondFixedSurface=255;} -'sol' = {typeOfFirstFixedSurface=114; typeOfSecondFixedSurface=255;} -'sol' = {typeOfFirstFixedSurface=114; typeOfSecondFixedSurface=114;} -'hhl' = {typeOfFirstFixedSurface=118; typeOfSecondFixedSurface=255;} -'hpl' = {typeOfFirstFixedSurface=119; typeOfSecondFixedSurface=255;} -'sol' = {typeOfFirstFixedSurface=151; typeOfSecondFixedSurface=255;} -'sol' = {typeOfFirstFixedSurface=151; typeOfSecondFixedSurface=151;} -'sol' = {typeOfFirstFixedSurface=152; typeOfSecondFixedSurface=255;} -'sol' = {typeOfFirstFixedSurface=152; typeOfSecondFixedSurface=152;} -'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=160; scaleFactorOfFirstFixedSurface=0; - scaledValueOfFirstFixedSurface=0; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=160;} -'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=9;} -'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=20; - scaledValueOfFirstFixedSurface=0; scaleFactorOfFirstFixedSurface=0;} -'sfc' = {typeOfFirstFixedSurface=162; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=166; typeOfSecondFixedSurface=255;} -'o3d' = {typeOfFirstFixedSurface=168; typeOfSecondFixedSurface=255;} -'o3d' = {typeOfFirstFixedSurface=168; typeOfSecondFixedSurface=168;} -'o2d' = {typeOfFirstFixedSurface=169; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=170; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=171; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=173; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=173; typeOfSecondFixedSurface=175;} -'o2d' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=255;} -'sfc' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=255; discipline=1;} -'o2d' = {typeOfFirstFixedSurface=175; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=176; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=160; - scaleFactorOfSecondFixedSurface=0; scaledValueOfSecondFixedSurface=0;} -'o2d' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=176;} -'sfc' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=176; discipline=1;} -'o2d' = {typeOfFirstFixedSurface=175; typeOfSecondFixedSurface=176;} -'sfc' = {typeOfFirstFixedSurface=177; typeOfSecondFixedSurface=255;} -'o2d' = {typeOfFirstFixedSurface=188; typeOfSecondFixedSurface=189;} +'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=8;} +'o2d' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=9;} +'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=162;} +'sfc' = {typeOfFirstFixedSurface=2; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=7; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=8; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=17; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=18; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=19; typeOfSecondFixedSurface=255;} +'o2d' = {discipline=10; typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} +'pl' = {typeOfFirstFixedSurface=100; typeOfSecondFixedSurface=255;} +'pl' = {typeOfFirstFixedSurface=100; typeOfSecondFixedSurface=100;} +'sfc' = {typeOfFirstFixedSurface=1; typeOfSecondFixedSurface=100; + scaleFactorOfSecondFixedSurface=0; scaledValueOfSecondFixedSurface=80000;} +'sfc' = {typeOfFirstFixedSurface=100; scaleFactorOfFirstFixedSurface=0; scaledValueOfFirstFixedSurface=80000; + typeOfSecondFixedSurface=100; scaleFactorOfSecondFixedSurface=0; scaledValueOfSecondFixedSurface=45000;} +'sfc' = {typeOfFirstFixedSurface=100; scaleFactorOfFirstFixedSurface=0; + scaledValueOfFirstFixedSurface=45000; typeOfSecondFixedSurface=8;} +'sfc' = {typeOfFirstFixedSurface=101; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=102; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=103; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=103; typeOfSecondFixedSurface=103;} +'ml' = {typeOfFirstFixedSurface=105; typeOfSecondFixedSurface=255;} +'ml' = {typeOfFirstFixedSurface=105; typeOfSecondFixedSurface=105;} +'sfc' = {typeOfFirstFixedSurface=106; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=106;typeOfSecondFixedSurface=106;} +'pt' = {typeOfFirstFixedSurface=107; typeOfSecondFixedSurface=255;} +'pt' = {typeOfFirstFixedSurface=107; typeOfSecondFixedSurface=107;} +'pv' = {typeOfFirstFixedSurface=109; typeOfSecondFixedSurface=255;} +'sol' = {typeOfFirstFixedSurface=114; typeOfSecondFixedSurface=255;} +'sol' = {typeOfFirstFixedSurface=114; typeOfSecondFixedSurface=114;} +'hhl' = {typeOfFirstFixedSurface=118; typeOfSecondFixedSurface=255;} +'hpl' = {typeOfFirstFixedSurface=119; typeOfSecondFixedSurface=255;} +'sol' = {typeOfFirstFixedSurface=151; typeOfSecondFixedSurface=255;} +'sol' = {typeOfFirstFixedSurface=151; typeOfSecondFixedSurface=151;} +'sol' = {typeOfFirstFixedSurface=152; typeOfSecondFixedSurface=255;} +'sol' = {typeOfFirstFixedSurface=152; typeOfSecondFixedSurface=152;} +'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=160; scaleFactorOfFirstFixedSurface=0; + scaledValueOfFirstFixedSurface=0; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=160;} +'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=9;} +'o2d' = {typeOfFirstFixedSurface=160; typeOfSecondFixedSurface=20; + scaledValueOfFirstFixedSurface=0; scaleFactorOfFirstFixedSurface=0;} +'sfc' = {typeOfFirstFixedSurface=162; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=166; typeOfSecondFixedSurface=255;} +'o3d' = {typeOfFirstFixedSurface=168; typeOfSecondFixedSurface=255;} +'o3d' = {typeOfFirstFixedSurface=168; typeOfSecondFixedSurface=168;} +'o2d' = {typeOfFirstFixedSurface=169; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=170; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=171; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=173; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=173; typeOfSecondFixedSurface=175;} +'o2d' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=255;} +'sfc' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=255; discipline=1;} +'o2d' = {typeOfFirstFixedSurface=175; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=176; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=160; + scaleFactorOfSecondFixedSurface=0; scaledValueOfSecondFixedSurface=0;} +'o2d' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=176;} +'sfc' = {typeOfFirstFixedSurface=174; typeOfSecondFixedSurface=176; discipline=1;} +'o2d' = {typeOfFirstFixedSurface=175; typeOfSecondFixedSurface=176;} +'sfc' = {typeOfFirstFixedSurface=177; typeOfSecondFixedSurface=255;} +'o2d' = {typeOfFirstFixedSurface=188; typeOfSecondFixedSurface=189;} 'sfc' = {typeOfFirstFixedSurface=5; typeOfSecondFixedSurface=255;} 'sfc' = {typeOfFirstFixedSurface=14; typeOfSecondFixedSurface=255;} diff --git a/definitions/grib2/typeOfLevelConcept.def b/definitions/grib2/typeOfLevelConcept.def index 2f350d663..946b0722d 100644 --- a/definitions/grib2/typeOfLevelConcept.def +++ b/definitions/grib2/typeOfLevelConcept.def @@ -20,6 +20,7 @@ 'neutralBuoyancy' = {typeOfFirstFixedSurface=16; typeOfSecondFixedSurface=255;} 'mostUnstableParcel' = {typeOfFirstFixedSurface=17; typeOfSecondFixedSurface=255;} 'mixedLayerParcel' = {typeOfFirstFixedSurface=18; typeOfSecondFixedSurface=255;} +'lowestLevelOfCloudCoverExceedance' = {typeOfFirstFixedSurface=19; typeOfSecondFixedSurface=255;} 'isothermal' = {typeOfFirstFixedSurface=20; typeOfSecondFixedSurface=255;} 'isobaricInPa' = {typeOfFirstFixedSurface=100; typeOfSecondFixedSurface=255; pressureUnits='Pa';} 'isobaricInhPa' = {typeOfFirstFixedSurface=100; pressureUnits='hPa'; typeOfSecondFixedSurface=255;} From 2b8c39e21dbe5b856da99869841d34cd34fab339 Mon Sep 17 00:00:00 2001 From: shahramn Date: Fri, 20 Sep 2024 14:29:26 +0100 Subject: [PATCH 19/37] ECC-1920: Concepts: Allow passing a key as the basename --- src/action_class_concept.cc | 19 +- src/grib_yacc.cc | 1903 +++++++++++++++++------------------ src/griby.y | 3 +- 3 files changed, 960 insertions(+), 965 deletions(-) diff --git a/src/action_class_concept.cc b/src/action_class_concept.cc index 9799632ce..d770ee266 100644 --- a/src/action_class_concept.cc +++ b/src/action_class_concept.cc @@ -218,10 +218,9 @@ static grib_concept_value* get_concept_impl(grib_handle* h, grib_action_concept* char master[1024] = {0,}; char local[1024] = {0,}; char masterDir[1024] = {0,}; - size_t lenMasterDir = 1024; + size_t lenMasterDir = sizeof(masterDir); char key[4096] = {0,}; char* full = 0; - int id; const size_t bufLen = sizeof(buf); const size_t keyLen = sizeof(key); @@ -234,7 +233,15 @@ static grib_concept_value* get_concept_impl(grib_handle* h, grib_action_concept* Assert(self->masterDir); grib_get_string(h, self->masterDir, masterDir, &lenMasterDir); - snprintf(buf, bufLen, "%s/%s", masterDir, self->basename); + // See ECC-1920: The basename could be a key or a string + char* basename = self->basename; // default is a string + Assert(basename); + char baseNameValue[1024] = {0,}; // its value if a key + size_t lenBaseName = sizeof(baseNameValue); + if (grib_get_string(h, self->basename, baseNameValue, &lenBaseName) == GRIB_SUCCESS) { + basename = baseNameValue; // self->basename was a key whose value is baseNameValue + } + snprintf(buf, bufLen, "%s/%s", masterDir, basename); grib_recompose_name(h, NULL, buf, master, 1); @@ -242,13 +249,13 @@ static grib_concept_value* get_concept_impl(grib_handle* h, grib_action_concept* char localDir[1024] = {0,}; size_t lenLocalDir = 1024; grib_get_string(h, self->localDir, localDir, &lenLocalDir); - snprintf(buf, bufLen, "%s/%s", localDir, self->basename); + snprintf(buf, bufLen, "%s/%s", localDir, basename); grib_recompose_name(h, NULL, buf, local, 1); } snprintf(key, keyLen, "%s%s", master, local); - id = grib_itrie_get_id(h->context->concepts_index, key); + int id = grib_itrie_get_id(h->context->concepts_index, key); if ((c = h->context->concepts[id]) != NULL) return c; @@ -274,7 +281,7 @@ static grib_concept_value* get_concept_impl(grib_handle* h, grib_action_concept* else { grib_context_log(context, GRIB_LOG_FATAL, "unable to find definition file %s in %s:%s\nDefinition files path=\"%s\"", - self->basename, master, local, context->grib_definition_files_path); + basename, master, local, context->grib_definition_files_path); return NULL; } diff --git a/src/grib_yacc.cc b/src/grib_yacc.cc index e374bc009..072b29ae4 100644 --- a/src/grib_yacc.cc +++ b/src/grib_yacc.cc @@ -961,16 +961,16 @@ union grib_yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 214 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1946 +#define YYLAST 1837 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 145 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 50 /* YYNRULES -- Number of rules. */ -#define YYNRULES 268 +#define YYNRULES 269 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 905 +#define YYNSTATES 912 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 382 @@ -1051,14 +1051,14 @@ static const grib_yytype_int16 grib_yyrline[] = 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 695, 698, 701, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 724, 725, 728, 729, 732, 733, 736, 737, - 740, 744, 745, 746, 749, 751, 753, 755, 759, 760, - 763, 764, 768, 770, 774, 775, 776, 777, 780, 781, - 782, 784, 785, 786, 787, 788, 789, 793, 794, 797, + 719, 720, 721, 725, 726, 729, 730, 733, 734, 737, + 738, 741, 745, 746, 747, 750, 752, 754, 756, 760, + 761, 764, 765, 769, 771, 775, 776, 777, 778, 781, + 782, 783, 785, 786, 787, 788, 789, 790, 794, 795, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 808, 811, 812, 813, 816, 818, 819, 820, 821, 822, - 823, 824, 829, 830, 833, 834, 837, 838, 841, 847, - 848, 851, 852, 855, 856, 859, 863, 866, 867 + 808, 809, 812, 813, 814, 817, 819, 820, 821, 822, + 823, 824, 825, 830, 831, 834, 835, 838, 839, 842, + 848, 849, 852, 853, 856, 857, 860, 864, 867, 868 }; #endif @@ -1116,7 +1116,7 @@ grib_yysymbol_name (grib_yysymbol_kind_t grib_yysymbol) } #endif -#define YYPACT_NINF (-658) +#define YYPACT_NINF (-656) #define grib_yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1130,97 +1130,98 @@ grib_yysymbol_name (grib_yysymbol_kind_t grib_yysymbol) STATE-NUM. */ static const grib_yytype_int16 grib_yypact[] = { - 1507, -658, -37, -14, 51, 142, -53, -40, 58, 32, - 72, 98, 85, 25, 99, 139, 177, 162, 168, 176, - 197, 205, 208, 212, 228, 270, 272, 277, 310, 313, - 314, 315, 126, 311, 316, 317, 318, 319, 320, 321, - 322, 325, 328, 329, 330, 331, 333, 334, 291, 356, - 357, -12, 14, 15, 364, 755, 360, 366, 365, 374, - 369, 376, 378, 379, 385, 386, 381, 383, 384, 387, - 394, 397, 398, 400, 393, 401, -11, 407, 409, -81, - 535, -658, -658, 1610, 415, -658, -658, -658, -658, -658, - -658, 201, 82, -658, -658, -658, -658, 18, -658, -658, - -658, -658, 755, 755, 421, 422, 423, 425, 426, 755, - 427, 183, 418, 430, -658, -658, 755, -38, 431, 432, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 429, 434, 235, 433, 435, 437, - 233, 436, -78, -658, 438, 439, 443, 89, -94, 132, - 428, 755, 444, 450, -658, 451, -658, 459, -658, 256, - 456, 457, 458, 460, -658, -658, 461, 463, 755, 465, - -658, -658, -658, 755, -45, -658, -658, -658, 441, 264, - 424, -658, -52, -71, 259, 472, 478, -658, 446, -658, - 467, 428, 474, 428, 469, 470, 471, -658, 479, 480, - 481, 482, 477, 483, 485, 755, 755, 755, 487, 230, - -80, 468, 22, 475, -658, 488, 7, 486, 1819, -658, - -658, 490, 493, 495, -658, 496, 497, -658, 489, 498, - -658, 500, 501, 502, 491, 503, -658, -658, 504, 508, - 755, 755, -658, 428, 428, 510, 509, 755, 524, 428, - 525, 522, 428, 428, 428, 428, 428, 428, 428, 428, - 428, 428, 428, 428, 428, 428, 755, 526, 528, 529, - 755, 530, 531, 539, 540, 541, 534, 543, 755, 134, - 755, 544, 545, 201, 546, 82, 547, 548, 201, 419, - -658, -658, 542, 84, 755, 549, 550, 551, 552, 755, - 553, 554, 555, 556, 268, 259, 303, 558, -658, -658, - 755, -76, -76, -45, -45, -45, -45, -45, -45, 258, - 258, 258, 258, 258, 258, 258, 258, 755, 755, 484, - 755, -658, 561, -658, 755, 755, 755, 564, 565, 566, - 569, 755, 755, 755, -658, 570, 571, 755, 573, 575, - 576, 591, 592, 560, 557, 596, 560, 557, 557, 755, - 578, 428, 557, 755, 17, -658, 537, 538, 597, 598, - 755, 755, 590, 593, -658, 606, 607, 599, 293, 600, - -658, -658, -658, 608, 602, 603, 418, -658, 612, 615, - -658, -658, -658, -658, -658, -658, -658, -658, -658, -658, - -658, -658, -658, -658, 609, 617, 618, 619, 611, 621, - 622, 428, 613, -658, 755, 624, 428, 262, 428, 616, - -9, 57, -90, 623, -73, 30, 133, -25, -658, -658, - -658, -658, -658, -658, -658, -658, -658, -658, -658, -658, - -658, -658, 625, -658, -48, -658, 251, -658, -658, 627, - 629, 630, 632, 626, 634, 639, 64, 636, 642, 643, - -658, 640, -658, -658, -658, -658, -658, -658, -658, -658, - -658, -658, -658, -52, -52, -71, -71, -71, -71, -71, - -71, 259, 472, 648, 644, 654, 646, 647, 649, 657, - 659, 660, 661, 653, 664, 665, -658, 658, 666, 755, - 755, 755, 755, 755, -658, 33, 668, 476, 557, -658, - 203, 667, 670, 672, 418, -658, 671, 676, 677, 1716, - 1819, 154, 169, 1819, 418, 418, 418, 418, 1819, 418, - 428, 172, 180, 418, 186, 755, 869, 418, 1035, 628, - -658, 687, 679, 681, -658, -658, -658, -67, -658, 418, - 633, 678, 696, 201, 428, 697, 428, 700, 685, 702, - 201, 428, 419, 703, 704, 340, 701, -658, -61, -59, - -658, -658, -658, -658, -658, 707, 712, 713, -658, -658, - 714, 716, -658, 715, -658, 428, -658, -658, -658, 717, - 719, 418, 755, -658, -658, -658, 506, 711, 720, 723, - 724, 727, 728, 737, -658, 745, -658, -658, -658, -658, - -658, 418, 428, -658, 729, 731, 9, 736, -65, 741, - 746, 755, 428, 755, 428, 748, 428, 428, 428, 428, - 749, 428, -658, 755, 428, 755, 428, 428, 755, 428, - 418, 755, 418, 428, 755, 418, 755, 428, 418, 755, - 299, 428, 428, 740, 201, 71, -16, -658, 763, -658, - 764, 201, 86, 61, -658, -658, 730, 761, 701, -62, - -658, 767, -658, 775, -658, 768, 769, 104, 776, 778, - -658, -658, 755, 755, -658, 418, 755, -82, -658, 1819, - 428, 428, 428, 418, 418, -658, 560, 774, 428, -658, - 1819, -65, 455, 868, -658, -658, 901, 777, -658, 779, - -658, -658, -658, -658, -658, -658, -658, -658, 780, -658, - 781, -658, -658, 782, -658, 428, 783, 558, -66, -658, - 784, 428, 785, -658, 428, 786, -658, -658, -658, -658, - 790, 76, 795, 773, 428, 791, 797, 103, 798, 788, - 428, 755, 755, 767, 916, 701, -658, -658, -658, -658, - 799, -658, 802, 805, 800, 801, 428, 804, 806, -658, - -658, 803, -658, -658, -658, 428, 428, 222, -658, -658, - 807, 809, 418, 418, 418, 418, 418, -658, 418, 814, - -658, 418, -658, 428, -658, 418, 105, 428, 808, 201, - -658, 811, 111, 428, 819, 201, -658, -658, -658, 812, - 767, 816, 817, 820, -658, -658, -658, 1819, 1377, -658, - -658, -658, 825, 1819, 1819, 428, 428, 428, 428, 428, - 428, 813, 428, -658, 428, 831, 428, -658, 834, 156, - 835, 836, 428, -658, 837, 171, 340, -658, -658, -658, - -658, -658, 826, -658, 827, 828, -658, -658, -658, -658, - -658, -658, 829, -658, -658, 114, -658, 115, 428, 838, - 839, -658, 129, 428, -60, -658, -658, -658, 428, 843, - 428, 844, 428, -658, 428, 428, 846, 428, -658, -658, - -658, 841, -658, 845, -658, -658, -658, 847, -658, 428, - 428, 428, -658, -658, -658 + 1398, -656, -112, -96, -27, 108, -13, 38, 100, 109, + 140, 160, 172, -4, 177, 207, 171, 214, 220, 242, + 253, 261, 263, 268, 270, 282, 284, 289, 290, 291, + 292, 293, 190, 288, 296, 295, 301, 297, 298, 299, + 302, 308, 310, 313, 314, 316, 317, 319, 312, 322, + 323, -69, -66, -43, 324, 1005, 318, -71, 325, 327, + 315, 333, 334, 337, 338, 339, 336, 352, 353, 354, + 340, 343, 361, 362, 355, 356, 6, 357, 358, -101, + 489, -656, -656, 1501, 364, -656, -656, -656, -656, -656, + -656, 257, 73, -656, -656, -656, -656, 15, -656, -656, + -656, -656, 1005, 1005, 366, 368, 370, 372, 373, 1005, + 374, 88, 365, 375, -656, -656, 1005, -34, 376, 377, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 379, 384, 195, 380, 387, 388, + 74, 381, -87, -656, 383, 390, 386, 23, 75, 94, + 395, 1005, 391, 406, -656, 389, -656, 396, -656, 148, + 411, 412, 413, 416, -656, -656, 417, 419, 1005, 420, + -656, -656, -656, 1005, -33, -656, -656, -656, 393, 168, + 421, -656, -74, -89, 90, 434, 442, -656, 441, -656, + 436, 395, 445, 395, 443, 446, 448, -656, 447, 455, + 456, 457, 452, 453, 458, 1005, 1005, 1005, 460, 303, + -32, 451, -11, 459, -656, 461, 7, 465, 1710, -656, + -656, 464, 466, 467, -656, 469, 470, -656, 473, 472, + -656, 474, 475, 477, 480, 479, -656, -656, 481, 482, + 1005, 1005, -656, 395, 395, 484, 485, 1005, 493, 395, + 488, 487, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 1005, 494, 498, 499, + 1005, 500, 502, 511, 515, 517, 510, 520, 1005, 602, + 1005, 524, 528, 257, 531, 73, 532, 533, 257, 492, + -656, -656, 491, 89, 1005, 534, 535, 550, 551, 1005, + 541, 561, 562, 563, 205, 90, 797, 559, -656, -656, + 1005, -78, -78, -33, -33, -33, -33, -33, -33, 124, + 124, 124, 124, 124, 124, 124, 124, 1005, 1005, 565, + 1005, -656, 564, -656, 1005, 1005, 1005, 566, 567, 570, + 572, 1005, 1005, 1005, -656, 571, 573, 1005, 575, 576, + 578, 579, 580, 568, 581, 584, 568, 581, 581, 1005, + 590, 395, 581, 1005, 18, -656, 560, 582, 585, 586, + 1005, 1005, 583, 588, -656, 593, 596, 589, 234, 597, + -656, -656, -656, 598, 595, 601, 365, -656, 609, 611, + -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, + -656, -656, -656, -656, 605, 613, 615, 616, 610, 618, + 620, 395, 587, -656, 1005, 621, 395, 271, 395, 614, + -15, 138, -40, 622, -72, 28, 196, 27, -656, -656, + -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, + -656, -656, 623, -656, -46, -656, 21, -656, -656, 624, + 627, 628, 629, 626, 632, 634, 55, 630, 637, 638, + -656, 635, -656, -656, -656, -656, -656, -656, -656, -656, + -656, -656, -656, -74, -74, -89, -89, -89, -89, -89, + -89, 90, 434, 631, 636, 633, 640, 641, 642, 643, + 647, 652, 654, 646, 655, 661, -656, 612, 663, 1005, + 1005, 1005, 1005, 1005, -656, 130, 653, 619, 581, -656, + 258, 660, 662, 649, 365, -656, 666, 667, 671, 1607, + 1710, 238, 239, 1710, 365, 365, 365, 365, 1710, 365, + 395, 241, 244, 365, 246, 1005, 1095, 365, 1126, 673, + -656, 682, 674, 677, -656, -656, -656, -67, -656, 365, + 275, 675, 686, 257, 395, 687, 395, 688, 678, 691, + 257, 395, 492, 700, 701, 321, 702, -656, -57, -56, + -656, -656, -656, -656, -656, 704, 705, 706, -656, -656, + 707, 708, -656, 703, -656, 395, -656, -656, -656, 709, + 714, 365, 1005, -656, -656, -656, 727, 712, 716, 718, + 721, 723, 728, 711, -656, 853, -656, -656, -656, -656, + -656, 365, 395, -656, 724, 729, 8, 733, -70, 734, + 738, 1005, 395, 1005, 395, 739, 395, 395, 395, 395, + 740, 395, -656, 1005, 395, 1005, 395, 395, 1005, 395, + 365, 1005, 365, 395, 1005, 365, 1005, 395, 365, 1005, + 278, 395, 395, 736, 750, 257, 58, 110, -656, 751, + -656, 752, 257, 59, 117, -656, -656, 732, 747, 702, + -49, -656, 710, -656, 757, -656, 758, 759, 62, 756, + 765, -656, -656, 1005, 1005, -656, 365, 1005, -59, -656, + 1710, 395, 395, 395, 365, 365, -656, 568, 761, 395, + -656, 1710, -70, 762, 879, -656, -656, 889, 767, -656, + 768, -656, -656, -656, -656, -656, -656, -656, -656, 769, + -656, 771, -656, -656, 772, -656, 395, 763, 559, -65, + -656, 773, 395, 777, -656, 395, 778, -656, -656, -656, + -656, 781, 788, 141, 791, 783, 395, 793, 796, 155, + 800, 790, 395, 1005, 1005, 710, 921, 702, -656, -656, + -656, -656, 802, -656, 805, 806, 801, 804, 395, 795, + 803, -656, -656, 807, -656, -656, -656, 395, 395, 265, + -656, -656, 810, 811, 365, 365, 365, 365, 365, -656, + 365, 808, -656, 365, -656, 395, -656, 365, 815, 127, + 395, 821, 257, -656, 822, 129, 395, 824, 257, -656, + -656, -656, 818, 710, 823, 825, 826, -656, -656, -656, + 1710, 1268, -656, -656, -656, 809, 1710, 1710, 395, 395, + 395, 395, 395, 395, 831, 395, -656, 395, 833, 837, + 395, -656, 839, 173, 840, 841, 395, -656, 842, 181, + 321, -656, -656, -656, -656, -656, 830, -656, 832, 834, + -656, -656, -656, -656, -656, -656, 843, -656, -656, 848, + 228, -656, 229, 395, 849, 854, -656, 237, 395, -42, + -656, -656, -656, 395, 395, 846, 395, 851, 395, -656, + 395, 395, 862, 395, -656, -656, -656, -656, 855, -656, + 856, -656, -656, -656, 857, -656, 395, 395, 395, -656, + -656, -656 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1237,28 +1238,28 @@ static const grib_yytype_int16 grib_yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 17, 0, 22, 28, 23, 24, 25, - 26, 3, 4, 27, 29, 192, 194, 267, 265, 259, - 260, 6, 0, 0, 0, 0, 0, 0, 0, 8, + 26, 3, 4, 27, 29, 193, 195, 268, 266, 260, + 261, 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 8, 8, 0, 68, 69, 0, 8, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 110, 0, 88, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 128, 0, 132, 0, 137, 0, - 0, 0, 0, 0, 221, 222, 0, 0, 0, 215, - 217, 219, 220, 0, 0, 32, 119, 33, 34, 218, - 228, 234, 243, 253, 255, 257, 258, 36, 0, 262, + 0, 0, 0, 0, 222, 223, 0, 0, 0, 216, + 218, 220, 221, 0, 0, 32, 119, 33, 34, 219, + 229, 235, 244, 254, 256, 258, 259, 36, 0, 263, 0, 8, 0, 8, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0, 20, 18, - 21, 0, 0, 0, 193, 0, 0, 195, 0, 0, - 268, 0, 0, 0, 0, 0, 107, 108, 0, 0, + 21, 0, 0, 0, 194, 0, 0, 196, 0, 0, + 269, 0, 0, 0, 0, 0, 107, 108, 0, 0, 8, 8, 152, 8, 8, 0, 0, 0, 0, 8, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 122, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 252, 0, 0, 218, 224, + 0, 0, 0, 0, 0, 253, 0, 0, 219, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 106, 0, 105, 8, 8, 8, 0, 0, 0, @@ -1274,69 +1275,70 @@ static const grib_yytype_int16 grib_yydefact[] = 158, 169, 170, 171, 161, 160, 162, 164, 163, 165, 166, 167, 155, 156, 0, 123, 0, 124, 127, 131, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 225, 0, 223, 35, 215, 250, 251, 227, 232, 233, - 229, 230, 231, 242, 241, 245, 249, 247, 248, 246, - 244, 254, 256, 0, 0, 0, 0, 0, 0, 0, + 226, 0, 224, 35, 216, 251, 252, 228, 233, 234, + 230, 231, 232, 243, 242, 246, 250, 248, 249, 247, + 245, 255, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 8, - 8, 8, 8, 8, 15, 0, 0, 0, 208, 261, + 8, 8, 8, 8, 15, 0, 0, 0, 209, 262, 0, 0, 0, 0, 8, 92, 0, 0, 0, 0, 0, 8, 8, 0, 8, 8, 8, 8, 0, 8, 8, 8, 8, 8, 8, 0, 0, 8, 0, 0, 109, 0, 0, 0, 89, 11, 9, 0, 90, 8, 0, 0, 0, 0, 8, 0, 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 13, 0, 0, - 130, 134, 139, 138, 118, 0, 0, 0, 240, 235, - 0, 0, 226, 0, 100, 8, 101, 102, 103, 0, + 130, 134, 139, 138, 118, 0, 0, 0, 241, 236, + 0, 0, 227, 0, 100, 8, 101, 102, 103, 0, 0, 8, 0, 115, 116, 117, 0, 0, 0, 0, - 0, 0, 0, 0, 213, 0, 205, 209, 212, 204, - 206, 8, 8, 207, 0, 0, 0, 0, 263, 0, + 0, 0, 0, 0, 214, 0, 206, 210, 213, 205, + 207, 8, 8, 208, 0, 0, 0, 0, 264, 0, 0, 8, 8, 8, 8, 0, 8, 8, 8, 8, 0, 8, 86, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 0, 8, 8, 0, 0, 0, 0, 175, 0, 196, - 0, 0, 0, 0, 184, 157, 0, 0, 0, 0, - 30, 145, 125, 0, 126, 0, 0, 0, 0, 0, - 120, 104, 8, 8, 96, 8, 0, 0, 198, 0, - 8, 8, 8, 8, 8, 16, 0, 0, 8, 93, - 0, 0, 0, 141, 264, 266, 143, 0, 37, 0, - 39, 174, 41, 48, 43, 51, 173, 87, 0, 52, - 0, 54, 85, 0, 49, 8, 0, 36, 8, 60, - 0, 8, 0, 111, 8, 0, 12, 10, 91, 67, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 8, 0, 0, 150, 146, 0, 31, 14, 236, 237, - 0, 238, 0, 0, 0, 0, 8, 0, 0, 203, - 199, 0, 44, 46, 45, 8, 8, 0, 210, 94, - 0, 0, 8, 8, 8, 8, 8, 57, 8, 0, - 56, 8, 63, 8, 113, 8, 0, 8, 0, 0, - 182, 0, 0, 8, 0, 0, 190, 148, 149, 0, - 151, 0, 0, 0, 97, 98, 65, 0, 0, 172, - 61, 62, 0, 0, 0, 8, 8, 8, 8, 8, - 8, 0, 8, 66, 8, 0, 8, 176, 0, 0, - 0, 0, 8, 185, 0, 0, 0, 239, 214, 216, - 200, 202, 0, 211, 0, 0, 38, 40, 53, 55, - 50, 59, 0, 64, 114, 0, 179, 0, 8, 0, - 0, 187, 0, 8, 0, 201, 142, 144, 8, 0, - 8, 0, 8, 183, 8, 8, 0, 8, 191, 147, - 58, 0, 177, 0, 181, 197, 186, 0, 189, 8, - 8, 8, 178, 180, 188 + 0, 8, 8, 0, 0, 0, 0, 0, 175, 0, + 197, 0, 0, 0, 0, 185, 157, 0, 0, 0, + 0, 30, 145, 125, 0, 126, 0, 0, 0, 0, + 0, 120, 104, 8, 8, 96, 8, 0, 0, 199, + 0, 8, 8, 8, 8, 8, 16, 0, 0, 8, + 93, 0, 0, 0, 141, 265, 267, 143, 0, 37, + 0, 39, 174, 41, 48, 43, 51, 173, 87, 0, + 52, 0, 54, 85, 0, 49, 8, 0, 36, 8, + 60, 0, 8, 0, 111, 8, 0, 12, 10, 91, + 67, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 8, 0, 0, 150, 146, 0, 31, 14, + 237, 238, 0, 239, 0, 0, 0, 0, 8, 0, + 0, 204, 200, 0, 44, 46, 45, 8, 8, 0, + 211, 94, 0, 0, 8, 8, 8, 8, 8, 57, + 8, 0, 56, 8, 63, 8, 113, 8, 0, 0, + 8, 0, 0, 183, 0, 0, 8, 0, 0, 191, + 148, 149, 0, 151, 0, 0, 0, 97, 98, 65, + 0, 0, 172, 61, 62, 0, 0, 0, 8, 8, + 8, 8, 8, 8, 0, 8, 66, 8, 0, 0, + 8, 176, 0, 0, 0, 0, 8, 186, 0, 0, + 0, 240, 215, 217, 201, 203, 0, 212, 0, 0, + 38, 40, 53, 55, 50, 59, 0, 64, 114, 0, + 0, 180, 0, 8, 0, 0, 188, 0, 8, 0, + 202, 142, 144, 8, 8, 0, 8, 0, 8, 184, + 8, 8, 0, 8, 192, 147, 58, 178, 0, 177, + 0, 182, 198, 187, 0, 190, 8, 8, 8, 179, + 181, 189 }; /* YYPGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yypgoto[] = { - -658, -658, 5, 533, -658, -352, 0, -658, -657, 686, - -307, -193, -658, -658, -658, -443, -170, 589, 207, -658, - 440, -658, -658, -658, -658, -259, 692, -658, -658, 294, - -658, -89, -349, -658, -75, -144, 810, 91, 113, 90, - -162, 663, -658, -58, -658, 10, 368, -658, -658, 890 + -656, -656, 5, 526, -656, -352, 0, -656, -655, -47, + -308, -202, -656, -656, -656, -443, 123, 549, 216, -656, + 429, -656, -656, -656, -656, -267, 713, -656, -656, 251, + -656, -85, -345, -656, -81, -144, 827, -1, 92, 29, + -161, 668, -656, -94, -656, 10, 382, -656, -656, 898 }; /* YYDEFGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yydefgoto[] = { - 0, 80, 290, 547, 569, 505, 617, 83, 671, 176, - 177, 178, 84, 85, 86, 668, 669, 243, 291, 442, - 443, 87, 88, 89, 90, 91, 92, 93, 687, 688, + 0, 80, 290, 547, 569, 505, 617, 83, 672, 176, + 177, 178, 84, 85, 86, 669, 670, 243, 291, 442, + 443, 87, 88, 89, 90, 91, 92, 93, 688, 689, 94, 95, 507, 508, 96, 179, 180, 181, 182, 183, 184, 185, 186, 187, 97, 618, 619, 99, 100, 101 }; @@ -1346,160 +1348,170 @@ static const grib_yytype_int16 grib_yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const grib_yytype_int16 grib_yytable[] = { - 82, 566, 224, 463, 510, 81, 305, 208, 511, 512, - 98, 753, 344, 516, 789, 164, 165, 227, 563, 564, - 563, 564, 228, 57, 422, 208, 686, 208, 768, 427, - 308, 167, 563, 564, 221, 222, 78, 223, 284, 348, - 349, 350, 285, 212, 231, 232, 276, 554, 464, 170, - 356, 225, 226, 213, 385, 769, 357, 277, 246, 229, - 175, 650, 167, 351, 556, 314, 315, 650, 319, 673, - 651, 107, 289, 320, 352, 754, 672, 889, 674, 169, - 170, 171, 172, 219, 108, 416, 418, 173, 565, 316, - 317, 318, 247, 292, 174, 102, 241, 248, 810, 221, - 222, 78, 223, 161, 162, 163, 57, 98, 221, 222, - 78, 223, 561, 154, 175, 307, 242, 242, 103, 550, - 155, 744, 242, 209, 551, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 156, - 158, 364, 229, 702, 164, 165, 157, 159, 345, 114, - 115, 355, 359, 161, 162, 163, 241, 360, 557, 607, - 445, 603, 110, 558, 604, 481, 513, 465, 466, 308, + 82, 566, 463, 344, 510, 81, 224, 305, 231, 232, + 98, 227, 511, 512, 755, 791, 422, 516, 57, 228, + 102, 427, 246, 212, 208, 208, 208, 164, 165, 167, + 308, 563, 564, 213, 563, 564, 103, 276, 563, 564, + 348, 349, 350, 314, 315, 385, 464, 170, 277, 687, + 319, 770, 225, 226, 229, 320, 154, 292, 189, 156, + 175, 650, 238, 155, 351, 556, 157, 316, 317, 318, + 651, 650, 674, 289, 167, 352, 416, 418, 771, 307, + 673, 675, 158, 219, 221, 222, 78, 223, 756, 159, + 565, 169, 170, 171, 172, 895, 247, 554, 356, 173, + 241, 248, 813, 57, 357, 104, 174, 98, 161, 162, + 163, 107, 345, 550, 175, 355, 242, 242, 551, 359, + 114, 115, 242, 241, 360, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 229, + 209, 364, 703, 161, 162, 163, 567, 545, 546, 164, + 165, 221, 222, 78, 223, 281, 557, 513, 282, 283, + 346, 558, 108, 607, 561, 445, 481, 465, 466, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 104, 166, 221, 222, 78, 223, 552, - 109, 167, 577, 553, 164, 165, 111, 578, 750, 742, - 221, 222, 78, 223, 743, 168, 225, 226, 169, 170, - 171, 172, 175, 797, 748, 113, 173, 242, 365, 749, - 446, 281, 112, 174, 282, 283, 755, 221, 222, 78, - 223, 116, 760, 835, 166, 447, 448, 761, 836, 841, - 803, 167, 879, 881, 842, 175, 175, 880, 882, 161, - 162, 163, 348, 349, 350, 168, 135, 886, 169, 170, - 171, 172, 887, 117, 286, 559, 173, 287, 288, 560, - 417, 175, 105, 174, 106, 175, 351, 161, 162, 163, - 221, 222, 78, 223, 621, 175, 120, 352, 241, 498, - 164, 165, 121, 868, 656, 221, 222, 78, 223, 623, - 122, 663, 633, 241, 175, 517, 241, 118, 873, 119, - 635, 175, 518, 355, 241, 240, 638, 241, 164, 165, - 241, 123, 161, 162, 163, 221, 222, 78, 223, 124, - 166, 603, 125, 224, 608, 175, 126, 167, 224, 175, - 175, 175, 640, 642, 777, 645, 175, 175, 175, 227, - 603, 168, 127, 822, 169, 170, 171, 172, 166, 268, - 353, 269, 173, 164, 165, 167, 354, 273, 274, 174, - 321, 322, 323, 324, 325, 326, 567, 545, 546, 767, - 297, 298, 169, 170, 171, 172, 311, 312, 545, 546, - 173, 242, 458, 459, 128, 741, 129, 174, 331, 685, - 333, 130, 747, 166, 467, 468, 469, 470, 471, 472, - 167, 475, 476, 477, 478, 479, 480, 524, 525, 175, - 563, 564, 428, 151, 168, 736, 737, 169, 170, 171, - 172, 755, 473, 474, 131, 173, 460, 132, 133, 134, - 137, 136, 174, 140, 141, 142, 143, 138, 139, 144, - 381, 382, 145, 146, 147, 148, 387, 149, 150, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 429, 161, 162, 163, 348, 349, 350, - 152, 153, 430, 431, 432, 433, 434, 435, 160, 190, - 436, 437, 188, 438, 439, 189, 440, 441, 191, 192, - 193, 351, 194, 195, 175, 175, 175, 175, 175, 196, - 197, 198, 352, 199, 200, 164, 165, 201, 202, 242, - 620, 203, 204, 625, 205, 206, 242, 242, 630, 242, - 242, 242, 242, 207, 242, 214, 242, 242, 242, 242, - 839, 210, 242, 211, 220, 233, 845, 697, 234, 235, - 236, 237, 241, 239, 242, 166, 245, 250, 251, 266, - 267, 271, 167, 272, 313, 270, 289, 224, 515, 310, - 329, 275, 278, 279, 224, 280, 168, 295, 293, 169, - 170, 171, 172, 727, 294, 296, 727, 173, 299, 300, - 301, 327, 302, 303, 174, 304, 242, 306, 328, 330, - 332, 334, 335, 336, 358, 337, 338, 339, 340, 341, - 212, 362, 483, 606, 686, 342, 242, 343, 540, 347, - 363, 370, 375, 544, 366, 548, 175, 367, 175, 213, - 368, 369, 371, 372, 373, 374, 376, 377, 175, 378, - 175, 383, 384, 175, 355, 242, 175, 242, 386, 175, - 242, 175, 224, 242, 175, 389, 388, 405, 224, 406, - 407, 409, 410, 411, 412, 413, 414, 415, 420, 421, - 423, 425, 426, 354, 357, 444, 874, 454, 455, 456, - 457, 506, 449, 450, 451, 452, 504, 175, 175, 771, - 242, 462, 485, 807, 808, 489, 490, 491, 242, 242, - 492, 244, 514, 496, 497, 499, 249, 500, 501, 252, + 308, 308, 308, 577, 164, 165, 744, 750, 578, 166, + 762, 745, 751, 379, 380, 763, 167, 225, 226, 447, + 448, 321, 322, 323, 324, 325, 326, 284, 273, 274, + 168, 285, 175, 169, 170, 171, 172, 242, 365, 404, + 240, 173, 241, 408, 166, 446, 286, 757, 174, 287, + 288, 167, 109, 419, 221, 222, 78, 223, 105, 110, + 106, 221, 222, 78, 223, 175, 175, 746, 169, 170, + 171, 172, 453, 498, 752, 839, 173, 845, 603, 461, + 840, 604, 846, 174, 111, 221, 222, 78, 223, 517, + 552, 175, 297, 298, 553, 175, 518, 355, 800, 221, + 222, 78, 223, 484, 112, 175, 657, 486, 487, 488, + 311, 312, 806, 664, 493, 494, 495, 221, 222, 78, + 223, 118, 113, 119, 175, 221, 222, 78, 223, 116, + 873, 175, 467, 468, 469, 470, 471, 472, 878, 268, + 135, 269, 161, 162, 163, 348, 349, 350, 559, 458, + 459, 117, 560, 640, 642, 175, 645, 224, 120, 175, + 175, 175, 224, 227, 121, 779, 175, 175, 175, 351, + 475, 476, 477, 478, 479, 480, 885, 887, 524, 525, + 352, 886, 888, 164, 165, 892, 122, 542, 621, 623, + 893, 633, 241, 241, 635, 241, 638, 123, 241, 769, + 241, 221, 222, 78, 223, 124, 603, 125, 743, 608, + 686, 242, 126, 603, 127, 749, 825, 545, 546, 653, + 654, 563, 564, 166, 737, 738, 128, 331, 129, 333, + 167, 473, 474, 130, 131, 132, 133, 134, 136, 175, + 137, 140, 141, 142, 168, 138, 143, 169, 170, 171, + 172, 139, 144, 353, 145, 173, 757, 146, 147, 354, + 148, 149, 174, 150, 151, 192, 152, 153, 160, 190, + 188, 191, 598, 599, 600, 601, 602, 193, 194, 381, + 382, 195, 196, 197, 202, 387, 198, 203, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 199, 200, 201, 204, 205, 206, 207, 214, + 233, 210, 211, 220, 234, 428, 235, 236, 237, 241, + 239, 245, 250, 251, 175, 175, 175, 175, 175, 266, + 267, 698, 270, 271, 272, 295, 275, 278, 280, 242, + 620, 310, 296, 625, 279, 293, 242, 242, 630, 242, + 242, 242, 242, 289, 242, 843, 242, 242, 242, 242, + 294, 849, 242, 299, 300, 301, 429, 728, 302, 303, + 728, 304, 306, 327, 242, 430, 431, 432, 433, 434, + 435, 313, 328, 436, 437, 329, 438, 439, 330, 440, + 441, 332, 224, 337, 708, 334, 710, 515, 335, 224, + 336, 338, 339, 340, 341, 342, 719, 358, 721, 212, + 343, 724, 347, 363, 727, 362, 242, 731, 366, 733, + 367, 213, 736, 368, 369, 370, 371, 372, 373, 355, + 374, 375, 376, 378, 377, 383, 242, 386, 384, 388, + 389, 161, 162, 163, 444, 405, 175, 540, 175, 406, + 407, 409, 544, 410, 548, 411, 766, 767, 175, 412, + 175, 413, 414, 175, 415, 242, 175, 242, 420, 175, + 242, 175, 421, 242, 175, 423, 425, 426, 224, 810, + 811, 244, 164, 165, 224, 454, 249, 449, 450, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 502, 503, 509, 519, 353, 356, 520, - 521, 522, 527, 526, 529, 523, 531, 632, 528, 532, - 533, 534, 535, 536, 537, 538, 539, 541, 543, 549, - 224, 555, 570, 562, 571, 572, 224, 573, 653, 574, - 646, 657, 575, 659, 161, 162, 163, 576, 664, 579, - 580, 581, 583, 582, 161, 162, 163, 584, 585, 586, - 587, 589, 588, 590, 591, 592, 593, 242, 242, 242, - 242, 242, 681, 242, 596, 238, 242, 594, 595, 597, - 242, 361, 605, 611, 609, 164, 165, 610, 613, 614, - 615, 647, 648, 649, 654, 164, 165, 850, 852, 699, - 655, 661, 658, 854, 855, 660, 662, 666, 667, 708, - 670, 710, 675, 712, 713, 714, 715, 676, 717, 677, - 678, 719, 679, 721, 722, 166, 724, 689, 680, 682, - 729, 683, 167, 690, 733, 166, 691, 692, 738, 739, - 693, 694, 167, 695, 751, 700, 168, 701, 740, 169, - 170, 171, 172, 703, 780, 696, 168, 173, 705, 169, - 170, 171, 172, 706, 174, 711, 716, 173, 161, 162, - 163, 745, 746, 346, 174, 752, 756, 772, 773, 774, - 757, 758, 759, 778, 762, 779, 763, 781, 782, 799, - 783, 784, 785, 786, 796, 801, 788, 791, 793, 795, - 798, 802, 809, 804, 805, 811, 379, 380, 812, 164, - 165, 813, 787, 814, 815, 790, 838, 862, 792, 840, - 819, 794, 817, 823, 818, 824, 831, 844, 846, 847, - 848, 800, 404, 849, 853, 865, 408, 806, 867, 869, - 870, 872, 878, 875, 876, 877, 419, 891, 893, 166, - 897, 884, 885, 816, 899, 530, 167, 424, 900, 568, - 901, 770, 820, 821, 309, 453, 704, 230, 0, 0, - 168, 482, 461, 169, 170, 171, 172, 0, 0, 0, - 833, 641, 665, 0, 837, 0, 0, 0, 174, 0, - 843, 0, 0, 0, 0, 0, 484, 0, 0, 0, - 486, 487, 488, 0, 0, 0, 0, 493, 494, 495, - 0, 0, 856, 857, 858, 859, 860, 861, 0, 863, - 0, 864, 0, 866, 0, 0, 0, 0, 0, 871, - 0, 0, 0, 0, 161, 162, 163, 0, 0, 0, + 263, 264, 265, 451, 452, 455, 456, 457, 175, 175, + 773, 242, 462, 483, 504, 485, 354, 489, 490, 242, + 242, 491, 166, 492, 496, 506, 497, 499, 500, 167, + 501, 502, 503, 509, 514, 353, 356, 521, 357, 519, + 522, 541, 527, 168, 520, 523, 169, 170, 171, 172, + 526, 528, 529, 531, 173, 532, 533, 534, 417, 535, + 536, 174, 538, 537, 539, 543, 632, 549, 596, 570, + 555, 562, 571, 572, 573, 583, 606, 585, 224, 574, + 575, 361, 576, 579, 224, 580, 581, 589, 582, 584, + 658, 590, 660, 586, 587, 588, 591, 665, 592, 593, + 611, 161, 162, 163, 348, 349, 350, 605, 594, 242, + 242, 242, 242, 242, 595, 242, 597, 609, 242, 610, + 614, 682, 242, 613, 615, 646, 647, 648, 351, 649, + 656, 655, 659, 661, 662, 663, 161, 162, 163, 352, + 854, 856, 164, 165, 667, 668, 858, 859, 700, 676, + 677, 671, 678, 679, 680, 687, 681, 696, 709, 758, + 711, 683, 713, 714, 715, 716, 684, 718, 690, 691, + 720, 692, 722, 723, 693, 725, 694, 164, 165, 730, + 701, 695, 166, 734, 741, 702, 753, 739, 740, 167, + 704, 706, 161, 162, 163, 707, 712, 717, 742, 747, + 748, 754, 759, 168, 764, 782, 169, 170, 171, 172, + 780, 760, 761, 765, 173, 783, 790, 166, 784, 785, + 786, 174, 787, 788, 167, 798, 793, 774, 775, 776, + 795, 797, 799, 164, 165, 781, 801, 804, 168, 802, + 805, 169, 170, 171, 172, 807, 808, 812, 814, 173, + 460, 815, 816, 820, 817, 530, 174, 818, 857, 772, + 834, 821, 789, 838, 822, 792, 826, 827, 794, 842, + 844, 796, 848, 166, 850, 866, 851, 869, 852, 853, + 167, 870, 803, 872, 874, 875, 877, 880, 809, 881, + 898, 882, 568, 879, 168, 900, 883, 169, 170, 171, + 172, 884, 890, 697, 819, 173, 904, 891, 906, 907, + 908, 666, 174, 823, 824, 230, 482, 0, 424, 0, + 705, 309, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 836, 0, 0, 0, 0, 841, 0, 0, 0, + 0, 0, 847, 0, 161, 162, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, - 888, 0, 0, 0, 0, 890, 0, 892, 0, 894, - 0, 895, 896, 0, 898, 164, 165, 0, 0, 0, - 542, 0, 0, 612, 0, 0, 902, 903, 904, 0, + 0, 0, 0, 0, 860, 861, 862, 863, 864, 865, + 0, 867, 0, 868, 0, 0, 871, 0, 0, 0, + 0, 0, 876, 612, 0, 164, 165, 0, 0, 0, 622, 624, 0, 626, 627, 628, 629, 0, 631, 0, - 634, 636, 637, 639, 0, 0, 643, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 0, 0, 652, 0, + 634, 636, 637, 639, 0, 0, 643, 0, 0, 889, + 0, 0, 0, 0, 894, 0, 0, 0, 652, 896, + 897, 0, 899, 0, 901, 166, 902, 903, 0, 905, + 0, 0, 167, 0, 161, 162, 163, 0, 0, 0, + 0, 0, 909, 910, 911, 0, 168, 0, 0, 169, + 170, 171, 172, 0, 0, 0, 0, 173, 0, 0, + 685, 0, 0, 0, 174, 161, 162, 163, 0, 0, + 0, 0, 0, 0, 0, 164, 165, 0, 0, 0, + 699, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 164, 165, 0, 726, + 0, 729, 0, 0, 732, 166, 0, 735, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 169, - 170, 171, 172, 0, 0, 0, 0, 644, 0, 0, - 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, - 684, 0, 0, 0, 0, 598, 599, 600, 601, 602, + 170, 171, 172, 0, 0, 0, 166, 641, 0, 0, + 0, 0, 0, 167, 174, 768, 0, 0, 0, 0, + 0, 0, 0, 777, 778, 0, 0, 168, 0, 0, + 169, 170, 171, 172, 0, 0, 0, 0, 644, 0, + 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, + 0, 0, 215, 3, 0, 0, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, + 0, 0, 0, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 0, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 0, 45, 46, 0, 0, + 47, 0, 0, 828, 829, 830, 831, 832, 0, 833, + 0, 0, 835, 0, 0, 0, 837, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 0, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 0, 69, + 70, 71, 72, 73, 74, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 698, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 216, 0, 0, 217, 0, 0, -8, 1, + 0, 0, 2, 3, 0, 855, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, + 0, 0, 0, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 0, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 0, 45, 46, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 0, 69, + 70, 71, 72, 73, 74, 215, 3, 75, 0, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 76, 77, 78, 79, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 0, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 0, 45, + 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 725, - 0, 728, 0, 0, 731, 0, 0, 734, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 766, 0, 0, 0, 0, 0, - 0, 0, 775, 776, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 707, 0, 709, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 718, - 0, 720, 0, 0, 723, 0, 0, 726, 0, 0, - 730, 0, 732, 0, 0, 735, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 764, 765, - 0, 825, 826, 827, 828, 829, 0, 830, 0, 0, - 832, 215, 3, 0, 834, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, - 0, 0, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 0, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 0, 45, 46, 0, 0, 47, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 0, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 0, 69, 70, - 71, 72, 73, 74, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 216, 0, 0, 217, 0, 0, -8, 1, 0, - 0, 2, 3, 0, 851, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, - 0, 0, 14, 15, 16, 17, 18, 19, 20, 21, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 0, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 0, 69, 70, 71, 72, 73, 74, 0, 0, + 75, 215, 3, 0, 0, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 216, 0, 0, 217, 0, + 218, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, 45, 46, 0, 0, 47, @@ -1509,7 +1521,7 @@ static const grib_yytype_int16 grib_yytable[] = 62, 63, 64, 65, 66, 67, 68, 0, 69, 70, 71, 72, 73, 74, 215, 3, 75, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 76, 77, 78, 79, 14, 15, 16, 17, 18, + 0, 616, 0, 0, 217, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, 45, 46, @@ -1518,187 +1530,176 @@ static const grib_yytype_int16 grib_yytable[] = 49, 50, 51, 52, 53, 54, 55, 56, 0, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, 69, 70, 71, 72, 73, 74, 0, 0, 75, - 215, 3, 0, 0, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 216, 0, 0, 217, 0, 218, - 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 0, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 0, 45, 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 0, 69, 70, 71, - 72, 73, 74, 215, 3, 75, 0, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, - 616, 0, 0, 217, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 0, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 0, 45, 46, 0, - 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 0, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, - 69, 70, 71, 72, 73, 74, 0, 0, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 216, 0, 0, 217 + 0, 0, 0, 0, 216, 0, 0, 217 }; static const grib_yytype_int16 grib_yycheck[] = { - 0, 444, 91, 310, 356, 0, 168, 18, 357, 358, - 0, 668, 205, 362, 80, 60, 61, 92, 80, 81, - 80, 81, 4, 88, 283, 18, 108, 18, 110, 288, - 174, 107, 80, 81, 124, 125, 126, 127, 132, 22, - 23, 24, 136, 124, 102, 103, 124, 137, 124, 125, - 130, 124, 125, 134, 247, 137, 136, 135, 116, 124, - 55, 128, 107, 46, 137, 117, 118, 128, 139, 128, - 137, 124, 138, 144, 57, 137, 137, 137, 137, 124, - 125, 126, 127, 83, 124, 278, 279, 132, 136, 141, - 142, 143, 130, 151, 139, 132, 134, 135, 755, 124, - 125, 126, 127, 19, 20, 21, 88, 97, 124, 125, - 126, 127, 137, 125, 109, 173, 111, 112, 132, 128, - 132, 137, 117, 134, 133, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 125, - 125, 134, 124, 134, 60, 61, 132, 132, 206, 124, - 125, 209, 130, 19, 20, 21, 134, 135, 128, 508, - 76, 128, 130, 133, 131, 327, 359, 311, 312, 313, + 0, 444, 310, 205, 356, 0, 91, 168, 102, 103, + 0, 92, 357, 358, 669, 80, 283, 362, 88, 4, + 132, 288, 116, 124, 18, 18, 18, 60, 61, 107, + 174, 80, 81, 134, 80, 81, 132, 124, 80, 81, + 22, 23, 24, 117, 118, 247, 124, 125, 135, 108, + 139, 110, 124, 125, 124, 144, 125, 151, 129, 125, + 55, 128, 109, 132, 46, 137, 132, 141, 142, 143, + 137, 128, 128, 138, 107, 57, 278, 279, 137, 173, + 137, 137, 125, 83, 124, 125, 126, 127, 137, 132, + 136, 124, 125, 126, 127, 137, 130, 137, 130, 132, + 134, 135, 757, 88, 136, 132, 139, 97, 19, 20, + 21, 124, 206, 128, 109, 209, 111, 112, 133, 130, + 124, 125, 117, 134, 135, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 124, + 134, 134, 134, 19, 20, 21, 125, 126, 127, 60, + 61, 124, 125, 126, 127, 132, 128, 359, 135, 136, + 207, 133, 124, 508, 137, 76, 327, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 132, 100, 124, 125, 126, 127, 132, - 132, 107, 128, 136, 60, 61, 124, 133, 137, 128, - 124, 125, 126, 127, 133, 121, 124, 125, 124, 125, - 126, 127, 207, 137, 128, 130, 132, 212, 218, 133, - 136, 132, 124, 139, 135, 136, 669, 124, 125, 126, - 127, 132, 128, 128, 100, 293, 294, 133, 133, 128, - 137, 107, 128, 128, 133, 240, 241, 133, 133, 19, - 20, 21, 22, 23, 24, 121, 130, 128, 124, 125, - 126, 127, 133, 124, 132, 132, 132, 135, 136, 136, - 136, 266, 130, 139, 132, 270, 46, 19, 20, 21, - 124, 125, 126, 127, 130, 280, 124, 57, 134, 347, - 60, 61, 124, 137, 553, 124, 125, 126, 127, 130, - 124, 560, 130, 134, 299, 363, 134, 130, 137, 132, - 130, 306, 370, 371, 134, 132, 130, 134, 60, 61, - 134, 124, 19, 20, 21, 124, 125, 126, 127, 124, - 100, 128, 124, 422, 131, 330, 124, 107, 427, 334, - 335, 336, 535, 536, 696, 538, 341, 342, 343, 424, - 128, 121, 124, 131, 124, 125, 126, 127, 100, 124, - 130, 126, 132, 60, 61, 107, 136, 134, 135, 139, - 111, 112, 113, 114, 115, 116, 125, 126, 127, 686, - 124, 125, 124, 125, 126, 127, 122, 123, 126, 127, - 132, 386, 124, 125, 124, 654, 124, 139, 191, 592, - 193, 124, 661, 100, 313, 314, 315, 316, 317, 318, - 107, 321, 322, 323, 324, 325, 326, 124, 125, 414, - 80, 81, 3, 132, 121, 126, 127, 124, 125, 126, - 127, 874, 319, 320, 124, 132, 133, 124, 124, 124, - 124, 130, 139, 124, 124, 124, 124, 130, 130, 124, - 243, 244, 124, 124, 124, 124, 249, 124, 124, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 54, 19, 20, 21, 22, 23, 24, - 124, 124, 63, 64, 65, 66, 67, 68, 124, 124, - 71, 72, 132, 74, 75, 129, 77, 78, 124, 130, - 124, 46, 124, 124, 499, 500, 501, 502, 503, 124, - 124, 130, 57, 130, 130, 60, 61, 130, 124, 514, - 520, 124, 124, 523, 124, 132, 521, 522, 528, 524, - 525, 526, 527, 132, 529, 0, 531, 532, 533, 534, - 799, 134, 537, 134, 129, 124, 805, 605, 126, 126, - 125, 125, 134, 126, 549, 100, 126, 126, 126, 130, - 126, 126, 107, 126, 140, 132, 138, 656, 361, 128, - 124, 135, 134, 134, 663, 132, 121, 126, 134, 124, - 125, 126, 127, 641, 134, 126, 644, 132, 132, 132, - 132, 119, 132, 132, 139, 132, 591, 132, 120, 132, - 126, 132, 132, 132, 136, 126, 126, 126, 126, 132, - 124, 136, 128, 137, 108, 132, 611, 132, 411, 132, - 132, 132, 131, 416, 134, 418, 621, 134, 623, 134, - 134, 134, 134, 133, 133, 133, 133, 133, 633, 131, - 635, 131, 133, 638, 702, 640, 641, 642, 124, 644, - 645, 646, 741, 648, 649, 133, 131, 131, 747, 131, - 131, 131, 131, 124, 124, 124, 132, 124, 124, 124, - 124, 124, 124, 136, 136, 133, 846, 124, 124, 124, - 124, 124, 133, 133, 133, 133, 126, 682, 683, 689, - 685, 133, 131, 751, 752, 131, 131, 131, 693, 694, - 131, 112, 124, 133, 133, 132, 117, 132, 132, 120, + 324, 325, 326, 128, 60, 61, 128, 128, 133, 100, + 128, 133, 133, 240, 241, 133, 107, 124, 125, 293, + 294, 111, 112, 113, 114, 115, 116, 132, 134, 135, + 121, 136, 207, 124, 125, 126, 127, 212, 218, 266, + 132, 132, 134, 270, 100, 136, 132, 670, 139, 135, + 136, 107, 132, 280, 124, 125, 126, 127, 130, 130, + 132, 124, 125, 126, 127, 240, 241, 137, 124, 125, + 126, 127, 299, 347, 137, 128, 132, 128, 128, 306, + 133, 131, 133, 139, 124, 124, 125, 126, 127, 363, + 132, 266, 124, 125, 136, 270, 370, 371, 137, 124, + 125, 126, 127, 330, 124, 280, 553, 334, 335, 336, + 122, 123, 137, 560, 341, 342, 343, 124, 125, 126, + 127, 130, 130, 132, 299, 124, 125, 126, 127, 132, + 137, 306, 313, 314, 315, 316, 317, 318, 137, 124, + 130, 126, 19, 20, 21, 22, 23, 24, 132, 124, + 125, 124, 136, 535, 536, 330, 538, 422, 124, 334, + 335, 336, 427, 424, 124, 697, 341, 342, 343, 46, + 321, 322, 323, 324, 325, 326, 128, 128, 124, 125, + 57, 133, 133, 60, 61, 128, 124, 414, 130, 130, + 133, 130, 134, 134, 130, 134, 130, 124, 134, 687, + 134, 124, 125, 126, 127, 124, 128, 124, 655, 131, + 592, 386, 124, 128, 124, 662, 131, 126, 127, 124, + 125, 80, 81, 100, 126, 127, 124, 191, 124, 193, + 107, 319, 320, 124, 124, 124, 124, 124, 130, 414, + 124, 124, 124, 124, 121, 130, 124, 124, 125, 126, + 127, 130, 124, 130, 124, 132, 879, 124, 124, 136, + 124, 124, 139, 124, 132, 130, 124, 124, 124, 124, + 132, 124, 499, 500, 501, 502, 503, 124, 124, 243, + 244, 124, 124, 124, 124, 249, 130, 124, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 130, 130, 130, 124, 124, 132, 132, 0, + 124, 134, 134, 129, 126, 3, 126, 125, 125, 134, + 126, 126, 126, 126, 499, 500, 501, 502, 503, 130, + 126, 605, 132, 126, 126, 126, 135, 134, 132, 514, + 520, 128, 126, 523, 134, 134, 521, 522, 528, 524, + 525, 526, 527, 138, 529, 802, 531, 532, 533, 534, + 134, 808, 537, 132, 132, 132, 54, 641, 132, 132, + 644, 132, 132, 119, 549, 63, 64, 65, 66, 67, + 68, 140, 120, 71, 72, 124, 74, 75, 132, 77, + 78, 126, 657, 126, 621, 132, 623, 361, 132, 664, + 132, 126, 126, 126, 132, 132, 633, 136, 635, 124, + 132, 638, 132, 132, 641, 136, 591, 644, 134, 646, + 134, 134, 649, 134, 134, 132, 134, 133, 133, 703, + 133, 131, 133, 131, 133, 131, 611, 124, 133, 131, + 133, 19, 20, 21, 133, 131, 621, 411, 623, 131, + 131, 131, 416, 131, 418, 124, 683, 684, 633, 124, + 635, 124, 132, 638, 124, 640, 641, 642, 124, 644, + 645, 646, 124, 648, 649, 124, 124, 124, 743, 753, + 754, 112, 60, 61, 749, 124, 117, 133, 133, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 132, 132, 129, 136, 130, 130, 136, - 124, 124, 124, 133, 131, 136, 124, 530, 136, 124, - 131, 124, 124, 124, 133, 124, 124, 134, 124, 133, - 839, 128, 125, 128, 125, 125, 845, 125, 125, 133, - 132, 554, 128, 556, 19, 20, 21, 128, 561, 133, - 128, 128, 124, 133, 19, 20, 21, 133, 124, 133, - 133, 124, 133, 124, 124, 124, 133, 782, 783, 784, - 785, 786, 585, 788, 136, 109, 791, 133, 133, 133, - 795, 212, 134, 131, 137, 60, 61, 137, 137, 133, - 133, 124, 133, 132, 136, 60, 61, 817, 818, 612, - 124, 136, 125, 823, 824, 125, 124, 124, 124, 622, - 129, 624, 125, 626, 627, 628, 629, 125, 631, 126, - 126, 634, 126, 636, 637, 100, 639, 136, 133, 132, - 643, 132, 107, 133, 647, 100, 133, 133, 651, 652, - 133, 133, 107, 126, 134, 136, 121, 136, 128, 124, - 125, 126, 127, 137, 6, 130, 121, 132, 137, 124, - 125, 126, 127, 137, 139, 137, 137, 132, 19, 20, - 21, 128, 128, 207, 139, 134, 129, 690, 691, 692, - 125, 133, 133, 129, 128, 698, 128, 6, 131, 136, - 131, 131, 131, 131, 124, 124, 133, 133, 133, 133, - 125, 124, 6, 125, 136, 126, 240, 241, 126, 60, - 61, 126, 725, 133, 133, 728, 128, 124, 731, 128, - 137, 734, 138, 136, 138, 136, 132, 128, 136, 133, - 133, 744, 266, 133, 129, 124, 270, 750, 124, 124, - 124, 124, 133, 137, 137, 137, 280, 124, 124, 100, - 124, 133, 133, 766, 133, 386, 107, 285, 133, 446, - 133, 687, 775, 776, 174, 299, 618, 97, -1, -1, - 121, 328, 306, 124, 125, 126, 127, -1, -1, -1, - 793, 132, 562, -1, 797, -1, -1, -1, 139, -1, - 803, -1, -1, -1, -1, -1, 330, -1, -1, -1, - 334, 335, 336, -1, -1, -1, -1, 341, 342, 343, - -1, -1, 825, 826, 827, 828, 829, 830, -1, 832, - -1, 834, -1, 836, -1, -1, -1, -1, -1, 842, - -1, -1, -1, -1, 19, 20, 21, -1, -1, -1, + 131, 132, 133, 133, 133, 124, 124, 124, 683, 684, + 690, 686, 133, 128, 126, 131, 136, 131, 131, 694, + 695, 131, 100, 131, 133, 124, 133, 132, 132, 107, + 132, 132, 132, 129, 124, 130, 130, 124, 136, 136, + 124, 134, 124, 121, 136, 136, 124, 125, 126, 127, + 133, 136, 131, 124, 132, 124, 131, 124, 136, 124, + 124, 139, 124, 133, 124, 124, 530, 133, 136, 125, + 128, 128, 125, 125, 125, 124, 137, 124, 843, 133, + 128, 212, 128, 133, 849, 128, 128, 124, 133, 133, + 554, 124, 556, 133, 133, 133, 124, 561, 124, 133, + 131, 19, 20, 21, 22, 23, 24, 134, 133, 784, + 785, 786, 787, 788, 133, 790, 133, 137, 793, 137, + 133, 585, 797, 137, 133, 132, 124, 133, 46, 132, + 124, 136, 125, 125, 136, 124, 19, 20, 21, 57, + 820, 821, 60, 61, 124, 124, 826, 827, 612, 125, + 125, 129, 126, 126, 126, 108, 133, 126, 622, 129, + 624, 132, 626, 627, 628, 629, 132, 631, 136, 133, + 634, 133, 636, 637, 133, 639, 133, 60, 61, 643, + 136, 133, 100, 647, 128, 136, 134, 651, 652, 107, + 137, 137, 19, 20, 21, 137, 137, 137, 128, 128, + 128, 134, 125, 121, 128, 6, 124, 125, 126, 127, + 129, 133, 133, 128, 132, 6, 133, 100, 131, 131, + 131, 139, 131, 131, 107, 124, 133, 691, 692, 693, + 133, 133, 124, 60, 61, 699, 125, 124, 121, 136, + 124, 124, 125, 126, 127, 125, 136, 6, 126, 132, + 133, 126, 126, 138, 133, 386, 139, 133, 129, 688, + 132, 138, 726, 128, 137, 729, 136, 136, 732, 128, + 128, 735, 128, 100, 136, 124, 133, 124, 133, 133, + 107, 124, 746, 124, 124, 124, 124, 137, 752, 137, + 124, 137, 446, 850, 121, 124, 133, 124, 125, 126, + 127, 133, 133, 130, 768, 132, 124, 133, 133, 133, + 133, 562, 139, 777, 778, 97, 328, -1, 285, -1, + 618, 174, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 795, -1, -1, -1, -1, 800, -1, -1, -1, + -1, -1, 806, -1, 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 868, -1, -1, -1, -1, - 873, -1, -1, -1, -1, 878, -1, 880, -1, 882, - -1, 884, 885, -1, 887, 60, 61, -1, -1, -1, - 414, -1, -1, 514, -1, -1, 899, 900, 901, -1, + -1, -1, -1, -1, 828, 829, 830, 831, 832, 833, + -1, 835, -1, 837, -1, -1, 840, -1, -1, -1, + -1, -1, 846, 514, -1, 60, 61, -1, -1, -1, 521, 522, -1, 524, 525, 526, 527, -1, 529, -1, - 531, 532, 533, 534, -1, -1, 537, -1, -1, -1, - -1, -1, -1, -1, -1, 100, -1, -1, 549, -1, - -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 121, -1, -1, 124, + 531, 532, 533, 534, -1, -1, 537, -1, -1, 873, + -1, -1, -1, -1, 878, -1, -1, -1, 549, 883, + 884, -1, 886, -1, 888, 100, 890, 891, -1, 893, + -1, -1, 107, -1, 19, 20, 21, -1, -1, -1, + -1, -1, 906, 907, 908, -1, 121, -1, -1, 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, - 591, -1, -1, -1, -1, 499, 500, 501, 502, 503, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 591, -1, -1, -1, 139, 19, 20, 21, -1, -1, + -1, -1, -1, -1, -1, 60, 61, -1, -1, -1, 611, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 640, - -1, 642, -1, -1, 645, -1, -1, 648, -1, -1, + -1, -1, -1, -1, -1, -1, 60, 61, -1, 640, + -1, 642, -1, -1, 645, 100, -1, 648, -1, -1, + -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 121, -1, -1, 124, + 125, 126, 127, -1, -1, -1, 100, 132, -1, -1, + -1, -1, -1, 107, 139, 686, -1, -1, -1, -1, + -1, -1, -1, 694, 695, -1, -1, 121, -1, -1, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 139, -1, -1, -1, -1, + -1, -1, 4, 5, -1, -1, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, -1, -1, -1, -1, + -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, + 62, -1, -1, 784, 785, 786, 787, 788, -1, 790, + -1, -1, 793, -1, -1, -1, 797, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, -1, 101, + 102, 103, 104, 105, 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 124, -1, -1, 127, -1, -1, 0, 1, + -1, -1, 4, 5, -1, 137, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, -1, -1, -1, -1, + -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, + 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, -1, 101, + 102, 103, 104, 105, 106, 4, 5, 109, -1, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, + -1, -1, 124, 125, 126, 127, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 685, -1, -1, -1, -1, -1, - -1, -1, 693, 694, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 621, -1, 623, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 633, - -1, 635, -1, -1, 638, -1, -1, 641, -1, -1, - 644, -1, 646, -1, -1, 649, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 682, 683, - -1, 782, 783, 784, 785, 786, -1, 788, -1, -1, - 791, 4, 5, -1, 795, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, -1, -1, -1, -1, -1, - -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, -1, -1, 109, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, -1, -1, 127, -1, -1, 0, 1, -1, - -1, 4, 5, -1, 137, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, -1, -1, -1, -1, -1, - -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, -1, 101, 102, 103, 104, 105, 106, -1, -1, + 109, 4, 5, -1, -1, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 124, -1, -1, 127, -1, + 129, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, @@ -1708,7 +1709,7 @@ static const grib_yytype_int16 grib_yycheck[] = 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, 4, 5, 109, -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, -1, - -1, 124, 125, 126, 127, 25, 26, 27, 28, 29, + -1, 124, -1, -1, 127, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, @@ -1717,29 +1718,8 @@ static const grib_yytype_int16 grib_yycheck[] = 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, -1, -1, 109, - 4, 5, -1, -1, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 124, -1, -1, 127, -1, 129, - -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, - 104, 105, 106, 4, 5, 109, -1, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, -1, -1, -1, - 124, -1, -1, 127, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, - -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, -1, -1, 109, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, -1, -1, 127 + -1, -1, -1, -1, 124, -1, -1, 127 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1811,32 +1791,33 @@ static const grib_yytype_uint8 grib_yystos[] = 151, 130, 162, 130, 162, 151, 162, 162, 162, 162, 151, 162, 163, 130, 162, 130, 162, 162, 130, 162, 156, 132, 156, 162, 132, 156, 132, 124, 133, 132, - 128, 137, 162, 125, 136, 124, 170, 163, 125, 163, - 125, 136, 124, 170, 163, 165, 124, 124, 160, 161, - 129, 153, 137, 128, 137, 125, 125, 126, 126, 126, - 133, 163, 132, 132, 162, 156, 108, 173, 174, 136, - 133, 133, 133, 133, 133, 126, 130, 188, 162, 163, - 136, 136, 134, 137, 191, 137, 137, 154, 163, 154, - 163, 137, 163, 163, 163, 163, 137, 163, 154, 163, - 154, 163, 163, 154, 163, 162, 154, 188, 162, 163, - 154, 162, 154, 163, 162, 154, 126, 127, 163, 163, - 128, 170, 128, 133, 137, 128, 128, 170, 128, 133, - 137, 134, 134, 153, 137, 160, 129, 125, 133, 133, - 128, 133, 128, 128, 154, 154, 162, 155, 110, 137, - 174, 151, 163, 163, 163, 162, 162, 150, 129, 163, - 6, 6, 131, 131, 131, 131, 131, 163, 133, 80, - 163, 133, 163, 133, 163, 133, 124, 137, 125, 136, - 163, 124, 124, 137, 125, 136, 163, 188, 188, 6, - 153, 126, 126, 126, 133, 133, 163, 138, 138, 137, - 163, 163, 131, 136, 136, 162, 162, 162, 162, 162, - 162, 132, 162, 163, 162, 128, 133, 163, 128, 170, - 128, 128, 133, 163, 128, 170, 136, 133, 133, 133, - 151, 137, 151, 129, 151, 151, 163, 163, 163, 163, - 163, 163, 124, 163, 163, 124, 163, 124, 137, 124, - 124, 163, 124, 137, 161, 137, 137, 137, 133, 128, - 133, 128, 133, 163, 133, 133, 128, 133, 163, 137, - 163, 124, 163, 124, 163, 163, 163, 124, 163, 133, - 133, 133, 163, 163, 163 + 128, 137, 162, 124, 125, 136, 124, 170, 163, 125, + 163, 125, 136, 124, 170, 163, 165, 124, 124, 160, + 161, 129, 153, 137, 128, 137, 125, 125, 126, 126, + 126, 133, 163, 132, 132, 162, 156, 108, 173, 174, + 136, 133, 133, 133, 133, 133, 126, 130, 188, 162, + 163, 136, 136, 134, 137, 191, 137, 137, 154, 163, + 154, 163, 137, 163, 163, 163, 163, 137, 163, 154, + 163, 154, 163, 163, 154, 163, 162, 154, 188, 162, + 163, 154, 162, 154, 163, 162, 154, 126, 127, 163, + 163, 128, 128, 170, 128, 133, 137, 128, 128, 170, + 128, 133, 137, 134, 134, 153, 137, 160, 129, 125, + 133, 133, 128, 133, 128, 128, 154, 154, 162, 155, + 110, 137, 174, 151, 163, 163, 163, 162, 162, 150, + 129, 163, 6, 6, 131, 131, 131, 131, 131, 163, + 133, 80, 163, 133, 163, 133, 163, 133, 124, 124, + 137, 125, 136, 163, 124, 124, 137, 125, 136, 163, + 188, 188, 6, 153, 126, 126, 126, 133, 133, 163, + 138, 138, 137, 163, 163, 131, 136, 136, 162, 162, + 162, 162, 162, 162, 132, 162, 163, 162, 128, 128, + 133, 163, 128, 170, 128, 128, 133, 163, 128, 170, + 136, 133, 133, 133, 151, 137, 151, 129, 151, 151, + 163, 163, 163, 163, 163, 163, 124, 163, 163, 124, + 124, 163, 124, 137, 124, 124, 163, 124, 137, 161, + 137, 137, 137, 133, 133, 128, 133, 128, 133, 163, + 133, 133, 128, 133, 163, 137, 163, 163, 124, 163, + 124, 163, 163, 163, 124, 163, 133, 133, 133, 163, + 163, 163 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1861,14 +1842,14 @@ static const grib_yytype_uint8 grib_yyr1[] = 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 167, 168, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 170, 170, 171, 171, 172, 172, 173, 173, - 174, 175, 175, 175, 176, 176, 176, 176, 177, 177, - 178, 178, 179, 179, 180, 180, 180, 180, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 182, 182, 183, + 169, 169, 169, 170, 170, 171, 171, 172, 172, 173, + 173, 174, 175, 175, 175, 176, 176, 176, 176, 177, + 177, 178, 178, 179, 179, 180, 180, 180, 180, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 184, 184, 184, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 186, 186, 187, 187, 188, 189, - 189, 190, 190, 191, 191, 192, 193, 194, 194 + 183, 183, 184, 184, 184, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 186, 186, 187, 187, 188, + 189, 189, 190, 190, 191, 191, 192, 193, 194, 194 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1891,16 +1872,16 @@ static const grib_yytype_int8 grib_yyr2[] = 1, 7, 11, 7, 11, 6, 7, 11, 4, 4, 2, 3, 1, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 8, 7, 7, 6, 9, 12, 14, 10, - 14, 12, 8, 11, 6, 9, 12, 10, 14, 12, - 8, 11, 1, 2, 1, 2, 6, 12, 1, 2, - 4, 10, 9, 7, 5, 5, 5, 5, 1, 2, - 4, 6, 5, 5, 8, 1, 8, 1, 1, 1, - 1, 1, 1, 3, 2, 3, 4, 3, 1, 3, - 3, 3, 3, 3, 1, 4, 6, 6, 6, 8, - 4, 3, 3, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 1, 3, 1, 3, 1, 1, 1, - 1, 4, 2, 1, 2, 1, 7, 1, 2 + 1, 1, 8, 7, 7, 6, 9, 12, 12, 14, + 10, 14, 12, 8, 11, 6, 9, 12, 10, 14, + 12, 8, 11, 1, 2, 1, 2, 6, 12, 1, + 2, 4, 10, 9, 7, 5, 5, 5, 5, 1, + 2, 4, 6, 5, 5, 8, 1, 8, 1, 1, + 1, 1, 1, 1, 3, 2, 3, 4, 3, 1, + 3, 3, 3, 3, 3, 1, 4, 6, 6, 6, + 8, 4, 3, 3, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 2, 1, 3, 1, 3, 1, 1, + 1, 1, 4, 2, 1, 2, 1, 7, 1, 2 }; @@ -2367,242 +2348,242 @@ grib_yyreduce: #line 263 "griby.y" { grib_parser_all_actions = 0;grib_parser_concept=0; grib_parser_hash_array=0;grib_parser_rules=0; } -#line 2371 "y.tab.c" +#line 2352 "y.tab.c" break; case 3: /* all: concept_list */ #line 265 "griby.y" { grib_parser_concept = reverse_concept((grib_yyvsp[0].concept_value)); } -#line 2377 "y.tab.c" +#line 2358 "y.tab.c" break; case 4: /* all: hash_array_list */ #line 266 "griby.y" { grib_parser_hash_array = reverse_hash_array((grib_yyvsp[0].hash_array_value)); } -#line 2383 "y.tab.c" +#line 2364 "y.tab.c" break; case 5: /* all: instructions */ #line 267 "griby.y" { grib_parser_all_actions = (grib_yyvsp[0].act); } -#line 2389 "y.tab.c" +#line 2370 "y.tab.c" break; case 6: /* all: rules */ #line 268 "griby.y" { grib_parser_rules = (grib_yyvsp[0].rules); } -#line 2395 "y.tab.c" +#line 2376 "y.tab.c" break; case 7: /* all: error */ #line 270 "griby.y" { grib_parser_all_actions = 0; grib_parser_concept=0; grib_parser_hash_array=0; grib_parser_rules=0; } -#line 2402 "y.tab.c" +#line 2383 "y.tab.c" break; case 9: /* dvalues: FLOAT */ #line 277 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,0,(grib_yyvsp[0].dval));} -#line 2408 "y.tab.c" +#line 2389 "y.tab.c" break; case 10: /* dvalues: dvalues ',' FLOAT */ #line 278 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,(grib_yyvsp[-2].dvalue),(grib_yyvsp[0].dval));} -#line 2414 "y.tab.c" +#line 2395 "y.tab.c" break; case 11: /* dvalues: INTEGER */ #line 279 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,0,(grib_yyvsp[0].lval));} -#line 2420 "y.tab.c" +#line 2401 "y.tab.c" break; case 12: /* dvalues: dvalues ',' INTEGER */ #line 280 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,(grib_yyvsp[-2].dvalue),(grib_yyvsp[0].lval));} -#line 2426 "y.tab.c" +#line 2407 "y.tab.c" break; case 13: /* svalues: STRING */ #line 283 "griby.y" { (grib_yyval.svalue)=grib_sarray_push(grib_parser_context,0,(grib_yyvsp[0].str));} -#line 2432 "y.tab.c" +#line 2413 "y.tab.c" break; case 14: /* svalues: svalues ',' STRING */ #line 284 "griby.y" { (grib_yyval.svalue)=grib_sarray_push(grib_parser_context,(grib_yyvsp[-2].svalue),(grib_yyvsp[0].str));} -#line 2438 "y.tab.c" +#line 2419 "y.tab.c" break; case 15: /* integer_array: INTEGER */ #line 288 "griby.y" { (grib_yyval.ivalue)=grib_iarray_push(0,(grib_yyvsp[0].lval));} -#line 2444 "y.tab.c" +#line 2425 "y.tab.c" break; case 16: /* integer_array: integer_array ',' INTEGER */ #line 289 "griby.y" { (grib_yyval.ivalue)=grib_iarray_push((grib_yyvsp[-2].ivalue),(grib_yyvsp[0].lval));} -#line 2450 "y.tab.c" +#line 2431 "y.tab.c" break; case 18: /* instructions: instruction instructions */ #line 293 "griby.y" { (grib_yyvsp[-1].act)->next = (grib_yyvsp[0].act); (grib_yyval.act) = (grib_yyvsp[-1].act); } -#line 2456 "y.tab.c" +#line 2437 "y.tab.c" break; case 19: /* instructions: instruction ';' instructions */ #line 294 "griby.y" { (grib_yyvsp[-2].act)->next = (grib_yyvsp[0].act); (grib_yyval.act) = (grib_yyvsp[-2].act); } -#line 2462 "y.tab.c" +#line 2443 "y.tab.c" break; case 20: /* instructions: instruction ';' */ #line 295 "griby.y" { (grib_yyval.act) = (grib_yyvsp[-1].act);} -#line 2468 "y.tab.c" +#line 2449 "y.tab.c" break; case 32: /* argument_list: empty */ #line 314 "griby.y" { (grib_yyval.explist) = 0; } -#line 2474 "y.tab.c" +#line 2455 "y.tab.c" break; case 35: /* arguments: argument ',' arguments */ #line 319 "griby.y" { (grib_yyvsp[-2].explist)->next = (grib_yyvsp[0].explist); (grib_yyval.explist) = (grib_yyvsp[-2].explist); } -#line 2480 "y.tab.c" +#line 2461 "y.tab.c" break; case 36: /* argument: expression */ #line 322 "griby.y" { (grib_yyval.explist) = grib_arguments_new(grib_parser_context,(grib_yyvsp[0].exp),NULL); } -#line 2486 "y.tab.c" +#line 2467 "y.tab.c" break; case 37: /* simple: UNSIGNED '[' INTEGER ']' IDENT default flags */ #line 327 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"unsigned",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2492 "y.tab.c" +#line 2473 "y.tab.c" break; case 38: /* simple: UNSIGNED '[' INTEGER ']' IDENT '[' argument_list ']' default flags */ #line 330 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"unsigned",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2498 "y.tab.c" +#line 2479 "y.tab.c" break; case 39: /* simple: UNSIGNED '(' INTEGER ')' IDENT default flags */ #line 333 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"unsigned_bits",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2504 "y.tab.c" +#line 2485 "y.tab.c" break; case 40: /* simple: UNSIGNED '(' INTEGER ')' IDENT '[' argument_list ']' default flags */ #line 336 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"unsigned_bits",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2510 "y.tab.c" +#line 2491 "y.tab.c" break; case 41: /* simple: ASCII '[' INTEGER ']' IDENT default flags */ #line 339 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ascii",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2516 "y.tab.c" +#line 2497 "y.tab.c" break; case 42: /* simple: GROUP IDENT default flags */ #line 342 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"group",0,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2522 "y.tab.c" +#line 2503 "y.tab.c" break; case 43: /* simple: GROUP IDENT '(' argument_list ')' default flags */ #line 345 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"group",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2528 "y.tab.c" +#line 2509 "y.tab.c" break; case 44: /* simple: IDENT '=' TO_INTEGER '(' argument_list ')' flags */ #line 348 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-6].str),"to_integer",0,(grib_yyvsp[-2].explist),0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-6].str)); } -#line 2534 "y.tab.c" +#line 2515 "y.tab.c" break; case 45: /* simple: IDENT '=' SEX2DEC '(' argument_list ')' flags */ #line 351 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-6].str),"sexagesimal2decimal",0,(grib_yyvsp[-2].explist),0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-6].str)); } -#line 2540 "y.tab.c" +#line 2521 "y.tab.c" break; case 46: /* simple: IDENT '=' TO_STRING '(' argument_list ')' flags */ #line 354 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-6].str),"to_string",0,(grib_yyvsp[-2].explist),0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-6].str)); } -#line 2546 "y.tab.c" +#line 2527 "y.tab.c" break; case 47: /* simple: NON_ALPHA IDENT default flags */ #line 357 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"non_alpha",0,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2552 "y.tab.c" +#line 2533 "y.tab.c" break; case 48: /* simple: ASCII '[' INTEGER ']' STRING default flags */ #line 361 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ascii",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2558 "y.tab.c" +#line 2539 "y.tab.c" break; case 49: /* simple: BYTE '[' INTEGER ']' IDENT default flags */ #line 364 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"bytes",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2564 "y.tab.c" +#line 2545 "y.tab.c" break; case 50: /* simple: BYTE '[' INTEGER ']' IDENT '[' argument_list ']' default flags */ #line 367 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"bytes",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2570 "y.tab.c" +#line 2551 "y.tab.c" break; case 51: /* simple: KSEC1EXPVER '[' INTEGER ']' IDENT default flags */ #line 370 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ksec1expver",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2576 "y.tab.c" +#line 2557 "y.tab.c" break; case 52: /* simple: SIGNED '[' INTEGER ']' IDENT default flags */ #line 373 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"signed",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2582 "y.tab.c" +#line 2563 "y.tab.c" break; case 53: /* simple: SIGNED '[' INTEGER ']' IDENT '[' argument_list ']' default flags */ #line 376 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"signed",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2588 "y.tab.c" +#line 2569 "y.tab.c" break; case 54: /* simple: SIGNED '(' INTEGER ')' IDENT default flags */ #line 379 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"signed_bits",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2594 "y.tab.c" +#line 2575 "y.tab.c" break; case 55: /* simple: SIGNED '(' INTEGER ')' IDENT '[' argument_list ']' default flags */ #line 382 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"signed_bits",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2600 "y.tab.c" +#line 2581 "y.tab.c" break; case 56: /* simple: CODETABLE '[' INTEGER ']' IDENT argument default flags */ #line 385 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"codetable",(grib_yyvsp[-5].lval), (grib_yyvsp[-2].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2606 "y.tab.c" +#line 2587 "y.tab.c" break; case 57: /* simple: CODETABLE '[' IDENT ']' IDENT argument default flags */ @@ -2616,326 +2597,326 @@ grib_yyreduce: (grib_yyvsp[-1].explist), (grib_yyvsp[0].lval), NULL, NULL); free((grib_yyvsp[-3].str)); } -#line 2620 "y.tab.c" +#line 2601 "y.tab.c" break; case 58: /* simple: CODETABLE '[' INTEGER ']' IDENT argument default SET '(' IDENT ')' flags */ #line 399 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-7].str),"codetable",(grib_yyvsp[-9].lval), (grib_yyvsp[-6].explist),(grib_yyvsp[-5].explist),(grib_yyvsp[0].lval),NULL,(grib_yyvsp[-2].str)); free((grib_yyvsp[-7].str));free((grib_yyvsp[-2].str)); } -#line 2627 "y.tab.c" +#line 2608 "y.tab.c" break; case 59: /* simple: CODETABLE '[' INTEGER ']' IDENT '(' argument_list ')' default flags */ #line 403 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"codetable",(grib_yyvsp[-7].lval), (grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2633 "y.tab.c" +#line 2614 "y.tab.c" break; case 60: /* simple: SMART_TABLE IDENT '(' argument_list ')' default flags */ #line 406 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"smart_table",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2639 "y.tab.c" +#line 2620 "y.tab.c" break; case 61: /* simple: IDENT '=' DICTIONARY '(' argument_list ')' default flags */ #line 409 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-7].str),"dictionary",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-7].str)); } -#line 2645 "y.tab.c" +#line 2626 "y.tab.c" break; case 62: /* simple: IDENT '=' GETENV '(' argument_list ')' default flags */ #line 412 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-7].str),"getenv",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-7].str)); } -#line 2651 "y.tab.c" +#line 2632 "y.tab.c" break; case 63: /* simple: COMPLEX_CODETABLE '[' INTEGER ']' IDENT argument default flags */ #line 415 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"complex_codetable",(grib_yyvsp[-5].lval), (grib_yyvsp[-2].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2657 "y.tab.c" +#line 2638 "y.tab.c" break; case 64: /* simple: COMPLEX_CODETABLE '[' INTEGER ']' IDENT '(' argument_list ')' default flags */ #line 418 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"complex_codetable",(grib_yyvsp[-7].lval), (grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2663 "y.tab.c" +#line 2644 "y.tab.c" break; case 65: /* simple: FLAG '[' INTEGER ']' IDENT argument default flags */ #line 421 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"codeflag",(grib_yyvsp[-5].lval), (grib_yyvsp[-2].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2669 "y.tab.c" +#line 2650 "y.tab.c" break; case 66: /* simple: LOOKUP '[' INTEGER ']' IDENT '(' argument_list ')' flags */ #line 424 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-4].str),"lookup",(grib_yyvsp[-6].lval),(grib_yyvsp[-2].explist),NULL,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-4].str)); } -#line 2675 "y.tab.c" +#line 2656 "y.tab.c" break; case 67: /* simple: FLAGBIT IDENT '(' argument_list ')' default flags */ #line 427 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"bit",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2681 "y.tab.c" +#line 2662 "y.tab.c" break; case 68: /* simple: LABEL IDENT */ #line 430 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[0].str)); } -#line 2687 "y.tab.c" +#line 2668 "y.tab.c" break; case 69: /* simple: LABEL STRING */ #line 433 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[0].str)); } -#line 2693 "y.tab.c" +#line 2674 "y.tab.c" break; case 70: /* simple: IBMFLOAT IDENT default flags */ #line 436 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ibmfloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2699 "y.tab.c" +#line 2680 "y.tab.c" break; case 71: /* simple: INT8 IDENT default flags */ #line 440 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int8",1,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2705 "y.tab.c" +#line 2686 "y.tab.c" break; case 72: /* simple: UINT8 IDENT default flags */ #line 443 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint8",1,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2711 "y.tab.c" +#line 2692 "y.tab.c" break; case 73: /* simple: INT16 IDENT default flags */ #line 446 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int16",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2717 "y.tab.c" +#line 2698 "y.tab.c" break; case 74: /* simple: UINT16 IDENT default flags */ #line 449 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint16",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2723 "y.tab.c" +#line 2704 "y.tab.c" break; case 75: /* simple: INT16_LITTLE_ENDIAN IDENT default flags */ #line 452 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int16_little_endian",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2729 "y.tab.c" +#line 2710 "y.tab.c" break; case 76: /* simple: UINT16_LITTLE_ENDIAN IDENT default flags */ #line 455 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint16_little_endian",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2735 "y.tab.c" +#line 2716 "y.tab.c" break; case 77: /* simple: INT32 IDENT default flags */ #line 458 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int32",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2741 "y.tab.c" +#line 2722 "y.tab.c" break; case 78: /* simple: UINT32 IDENT default flags */ #line 461 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint32",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2747 "y.tab.c" +#line 2728 "y.tab.c" break; case 79: /* simple: INT32_LITTLE_ENDIAN IDENT default flags */ #line 464 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int32_little_endian",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2753 "y.tab.c" +#line 2734 "y.tab.c" break; case 80: /* simple: UINT32_LITTLE_ENDIAN IDENT default flags */ #line 467 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint32_little_endian",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2759 "y.tab.c" +#line 2740 "y.tab.c" break; case 81: /* simple: INT64 IDENT default flags */ #line 470 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int64",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2765 "y.tab.c" +#line 2746 "y.tab.c" break; case 82: /* simple: UINT64 IDENT default flags */ #line 473 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint64",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2771 "y.tab.c" +#line 2752 "y.tab.c" break; case 83: /* simple: INT64_LITTLE_ENDIAN IDENT default flags */ #line 476 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int64_little_endian",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2777 "y.tab.c" +#line 2758 "y.tab.c" break; case 84: /* simple: UINT64_LITTLE_ENDIAN IDENT default flags */ #line 479 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint64_little_endian",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2783 "y.tab.c" +#line 2764 "y.tab.c" break; case 85: /* simple: BLOB IDENT '[' argument_list ']' default flags */ #line 482 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"blob",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2789 "y.tab.c" +#line 2770 "y.tab.c" break; case 86: /* simple: IBMFLOAT IDENT '.' IDENT default flags */ #line 486 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ibmfloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),(grib_yyvsp[-4].str),NULL);free((grib_yyvsp[-2].str)); free((grib_yyvsp[-4].str)); } -#line 2795 "y.tab.c" +#line 2776 "y.tab.c" break; case 87: /* simple: IBMFLOAT IDENT '[' argument ']' default flags */ #line 489 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"ibmfloat",4,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-5].str)); } -#line 2801 "y.tab.c" +#line 2782 "y.tab.c" break; case 88: /* simple: POS IDENT */ #line 492 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"position",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[0].str)); } -#line 2807 "y.tab.c" +#line 2788 "y.tab.c" break; case 89: /* simple: INTCONST IDENT '=' argument flags */ #line 495 "griby.y" { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[-3].str),"constant",0,(grib_yyvsp[-1].explist),NULL,(grib_yyvsp[0].lval),NULL);free((grib_yyvsp[-3].str)); } -#line 2813 "y.tab.c" +#line 2794 "y.tab.c" break; case 90: /* simple: TRANS IDENT '=' argument flags */ #line 498 "griby.y" { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[-3].str),"transient",0,(grib_yyvsp[-1].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL); free((grib_yyvsp[-3].str)); } -#line 2819 "y.tab.c" +#line 2800 "y.tab.c" break; case 91: /* simple: TRANS IDENT '=' '{' dvalues '}' flags */ #line 500 "griby.y" { (grib_yyval.act) = grib_action_create_transient_darray(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-2].dvalue),(grib_yyvsp[0].lval)); free((grib_yyvsp[-5].str)); } -#line 2825 "y.tab.c" +#line 2806 "y.tab.c" break; case 92: /* simple: FLOAT IDENT default flags */ #line 503 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ieeefloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2831 "y.tab.c" +#line 2812 "y.tab.c" break; case 93: /* simple: FLOAT IDENT '.' IDENT default flags */ #line 506 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ieeefloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),(grib_yyvsp[-4].str),NULL); free((grib_yyvsp[-2].str));free((grib_yyvsp[-4].str));} -#line 2837 "y.tab.c" +#line 2818 "y.tab.c" break; case 94: /* simple: FLOAT IDENT '[' argument ']' default flags */ #line 509 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"ieeefloat",4,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-5].str)); } -#line 2843 "y.tab.c" +#line 2824 "y.tab.c" break; case 95: /* simple: G1_HALF_BYTE IDENT */ #line 512 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free((grib_yyvsp[0].str)); } -#line 2849 "y.tab.c" +#line 2830 "y.tab.c" break; case 96: /* simple: SECTION_LENGTH '[' INTEGER ']' IDENT default */ #line 515 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"section_length",(grib_yyvsp[-3].lval),NULL,(grib_yyvsp[0].explist),0,NULL,NULL);free((grib_yyvsp[-1].str)); } -#line 2855 "y.tab.c" +#line 2836 "y.tab.c" break; case 97: /* simple: G1_MESSAGE_LENGTH '[' INTEGER ']' IDENT '(' argument_list ')' */ #line 518 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"g1_message_length",(grib_yyvsp[-5].lval),(grib_yyvsp[-1].explist),NULL,0,NULL,NULL);free((grib_yyvsp[-3].str)); } -#line 2861 "y.tab.c" +#line 2842 "y.tab.c" break; case 98: /* simple: G1_SECTION4_LENGTH '[' INTEGER ']' IDENT '(' argument_list ')' */ #line 521 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"g1_section4_length",(grib_yyvsp[-5].lval),(grib_yyvsp[-1].explist),NULL,0,NULL,NULL);free((grib_yyvsp[-3].str)); } -#line 2867 "y.tab.c" +#line 2848 "y.tab.c" break; case 99: /* simple: KSEC IDENT argument */ #line 524 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"ksec",0,(grib_yyvsp[0].explist),NULL,0,NULL,NULL);free((grib_yyvsp[-1].str)); } -#line 2873 "y.tab.c" +#line 2854 "y.tab.c" break; case 100: /* simple: PAD IDENT '(' argument_list ')' */ #line 527 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"pad",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2879 "y.tab.c" +#line 2860 "y.tab.c" break; case 101: /* simple: PADTO IDENT '(' argument_list ')' */ #line 530 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"padto",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2885 "y.tab.c" +#line 2866 "y.tab.c" break; case 102: /* simple: PADTOEVEN IDENT '(' argument_list ')' */ #line 533 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"padtoeven",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2891 "y.tab.c" +#line 2872 "y.tab.c" break; case 103: /* simple: PADTOMULTIPLE IDENT '(' argument_list ')' */ #line 536 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"padtomultiple",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2897 "y.tab.c" +#line 2878 "y.tab.c" break; case 104: /* simple: MESSAGE '[' INTEGER ']' IDENT flags */ #line 539 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"message",(grib_yyvsp[-3].lval),0,0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-1].str)); } -#line 2903 "y.tab.c" +#line 2884 "y.tab.c" break; case 105: /* simple: MESSAGE_COPY IDENT flags */ #line 542 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"message_copy",0,0,0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-1].str)); } -#line 2909 "y.tab.c" +#line 2890 "y.tab.c" break; case 106: /* simple: SECTION_PADDING IDENT flags */ #line 545 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"section_padding",0,0,0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-1].str)); } -#line 2915 "y.tab.c" +#line 2896 "y.tab.c" break; case 107: /* simple: TEMPLATE IDENT STRING */ #line 547 "griby.y" { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[-1].str),(grib_yyvsp[0].str)); free((grib_yyvsp[-1].str)); free((grib_yyvsp[0].str));} -#line 2921 "y.tab.c" +#line 2902 "y.tab.c" break; case 108: /* simple: TEMPLATE_NOFAIL IDENT STRING */ #line 549 "griby.y" { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[-1].str),(grib_yyvsp[0].str)); free((grib_yyvsp[-1].str)); free((grib_yyvsp[0].str));} -#line 2927 "y.tab.c" +#line 2908 "y.tab.c" break; case 109: /* simple: ALIAS IDENT '=' IDENT flags */ #line 552 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str),NULL,(grib_yyvsp[0].lval)); free((grib_yyvsp[-3].str)); free((grib_yyvsp[-1].str)); } -#line 2933 "y.tab.c" +#line 2914 "y.tab.c" break; case 110: /* simple: UNALIAS IDENT */ #line 555 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[0].str),NULL,NULL,0); free((grib_yyvsp[0].str)); } -#line 2939 "y.tab.c" +#line 2920 "y.tab.c" break; case 111: /* simple: ALIAS IDENT '.' IDENT '=' IDENT flags */ @@ -2943,7 +2924,7 @@ grib_yyreduce: { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str),(grib_yyvsp[-5].str),(grib_yyvsp[0].lval)); free((grib_yyvsp[-5].str)); free((grib_yyvsp[-3].str)); free((grib_yyvsp[-1].str)); } -#line 2947 "y.tab.c" +#line 2928 "y.tab.c" break; case 112: /* simple: UNALIAS IDENT '.' IDENT */ @@ -2951,19 +2932,19 @@ grib_yyreduce: { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[0].str),NULL,(grib_yyvsp[-2].str),0); free((grib_yyvsp[-2].str)); free((grib_yyvsp[0].str)); } -#line 2955 "y.tab.c" +#line 2936 "y.tab.c" break; case 113: /* simple: META IDENT IDENT '(' argument_list ')' default flags */ #line 566 "griby.y" { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[-6].str),(grib_yyvsp[-5].str),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL); free((grib_yyvsp[-6].str));free((grib_yyvsp[-5].str));} -#line 2961 "y.tab.c" +#line 2942 "y.tab.c" break; case 114: /* simple: META IDENT '.' IDENT IDENT '(' argument_list ')' default flags */ #line 569 "griby.y" { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[-6].str),(grib_yyvsp[-5].str),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),(grib_yyvsp[-8].str)); free((grib_yyvsp[-6].str));free((grib_yyvsp[-5].str));free((grib_yyvsp[-8].str));} -#line 2967 "y.tab.c" +#line 2948 "y.tab.c" break; case 115: /* simple: ITERATOR IDENT '(' argument_list ')' */ @@ -2979,7 +2960,7 @@ grib_yyreduce: "ITERATOR","iterator",a,NULL, GRIB_ACCESSOR_FLAG_HIDDEN|GRIB_ACCESSOR_FLAG_READ_ONLY,NULL); free((grib_yyvsp[-3].str)); } -#line 2983 "y.tab.c" +#line 2964 "y.tab.c" break; case 116: /* simple: NEAREST IDENT '(' argument_list ')' */ @@ -2995,7 +2976,7 @@ grib_yyreduce: "NEAREST","nearest",a,NULL, GRIB_ACCESSOR_FLAG_HIDDEN|GRIB_ACCESSOR_FLAG_READ_ONLY,NULL); free((grib_yyvsp[-3].str)); } -#line 2999 "y.tab.c" +#line 2980 "y.tab.c" break; case 117: /* simple: BOX IDENT '(' argument_list ')' */ @@ -3011,815 +2992,821 @@ grib_yyreduce: "BOX","box",a,NULL, GRIB_ACCESSOR_FLAG_HIDDEN|GRIB_ACCESSOR_FLAG_READ_ONLY,NULL); free((grib_yyvsp[-3].str)); } -#line 3015 "y.tab.c" +#line 2996 "y.tab.c" break; case 118: /* simple: EXPORT IDENT '(' argument_list ')' */ #line 608 "griby.y" { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].explist));free((grib_yyvsp[-3].str));} -#line 3021 "y.tab.c" +#line 3002 "y.tab.c" break; case 119: /* simple: REMOVE argument_list */ #line 611 "griby.y" { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[0].explist));} -#line 3027 "y.tab.c" +#line 3008 "y.tab.c" break; case 120: /* simple: RENAME '(' IDENT ',' IDENT ')' */ #line 613 "griby.y" { (grib_yyval.act) = grib_action_create_rename(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str));free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} -#line 3033 "y.tab.c" +#line 3014 "y.tab.c" break; case 121: /* simple: ASSERT '(' expression ')' */ #line 616 "griby.y" { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[-1].exp));} -#line 3039 "y.tab.c" +#line 3020 "y.tab.c" break; case 122: /* simple: MODIFY IDENT flags */ #line 619 "griby.y" { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[-1].str),(grib_yyvsp[0].lval)); free((grib_yyvsp[-1].str));} -#line 3045 "y.tab.c" +#line 3026 "y.tab.c" break; case 123: /* simple: SET IDENT '=' MISSING */ #line 621 "griby.y" { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[-2].str)); free((grib_yyvsp[-2].str)); } -#line 3051 "y.tab.c" +#line 3032 "y.tab.c" break; case 124: /* simple: SET IDENT '=' expression */ #line 622 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),0); free((grib_yyvsp[-2].str)); } -#line 3057 "y.tab.c" +#line 3038 "y.tab.c" break; case 125: /* simple: SET IDENT '=' '{' dvalues '}' */ #line 623 "griby.y" { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].dvalue)); free((grib_yyvsp[-4].str)); } -#line 3063 "y.tab.c" +#line 3044 "y.tab.c" break; case 126: /* simple: SET IDENT '=' '{' svalues '}' */ #line 624 "griby.y" { (grib_yyval.act) = grib_action_create_set_sarray(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].svalue)); free((grib_yyvsp[-4].str)); } -#line 3069 "y.tab.c" +#line 3050 "y.tab.c" break; case 127: /* simple: SET_NOFAIL IDENT '=' expression */ #line 626 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),1); free((grib_yyvsp[-2].str)); } -#line 3075 "y.tab.c" +#line 3056 "y.tab.c" break; case 128: /* simple: WRITE STRING */ #line 629 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),0,0); free((grib_yyvsp[0].str));} -#line 3081 "y.tab.c" +#line 3062 "y.tab.c" break; case 129: /* simple: WRITE */ #line 630 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); } -#line 3087 "y.tab.c" +#line 3068 "y.tab.c" break; case 130: /* simple: WRITE '(' INTEGER ')' STRING */ #line 631 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),0,(grib_yyvsp[-2].lval)); free((grib_yyvsp[0].str));} -#line 3093 "y.tab.c" +#line 3074 "y.tab.c" break; case 131: /* simple: WRITE '(' INTEGER ')' */ #line 632 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[-1].lval)); } -#line 3099 "y.tab.c" +#line 3080 "y.tab.c" break; case 132: /* simple: APPEND STRING */ #line 633 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),1,0); free((grib_yyvsp[0].str));} -#line 3105 "y.tab.c" +#line 3086 "y.tab.c" break; case 133: /* simple: APPEND */ #line 634 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); } -#line 3111 "y.tab.c" +#line 3092 "y.tab.c" break; case 134: /* simple: APPEND '(' INTEGER ')' STRING */ #line 635 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),1,(grib_yyvsp[-2].lval)); free((grib_yyvsp[0].str));} -#line 3117 "y.tab.c" +#line 3098 "y.tab.c" break; case 135: /* simple: APPEND '(' INTEGER ')' */ #line 636 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[-1].lval)); } -#line 3123 "y.tab.c" +#line 3104 "y.tab.c" break; case 136: /* simple: CLOSE '(' IDENT ')' */ #line 638 "griby.y" { (grib_yyval.act) = grib_action_create_close(grib_parser_context,(grib_yyvsp[-1].str)); free((grib_yyvsp[-1].str));} -#line 3129 "y.tab.c" +#line 3110 "y.tab.c" break; case 137: /* simple: PRINT STRING */ #line 639 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[0].str),0); free((grib_yyvsp[0].str)); } -#line 3135 "y.tab.c" +#line 3116 "y.tab.c" break; case 138: /* simple: PRINT '(' STRING ')' STRING */ #line 640 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[0].str),(grib_yyvsp[-2].str)); free((grib_yyvsp[0].str)); free((grib_yyvsp[-2].str));} -#line 3141 "y.tab.c" +#line 3122 "y.tab.c" break; case 139: /* simple: PRINT '(' IDENT ')' STRING */ #line 641 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[0].str),(grib_yyvsp[-2].str)); free((grib_yyvsp[0].str)); free((grib_yyvsp[-2].str));} -#line 3147 "y.tab.c" +#line 3128 "y.tab.c" break; case 140: /* simple: PRINT */ #line 642 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0); } -#line 3153 "y.tab.c" +#line 3134 "y.tab.c" break; case 141: /* if_block: IF '(' expression ')' '{' instructions '}' */ #line 646 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act),0,0,grib_yylineno,file_being_parsed()); } -#line 3159 "y.tab.c" +#line 3140 "y.tab.c" break; case 142: /* if_block: IF '(' expression ')' '{' instructions '}' ELSE '{' instructions '}' */ #line 647 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-8].exp),(grib_yyvsp[-5].act),(grib_yyvsp[-1].act),0,grib_yylineno,file_being_parsed()); } -#line 3165 "y.tab.c" +#line 3146 "y.tab.c" break; case 143: /* if_block: IF_TRANSIENT '(' expression ')' '{' instructions '}' */ #line 648 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act),0,1,grib_yylineno,file_being_parsed()); } -#line 3171 "y.tab.c" +#line 3152 "y.tab.c" break; case 144: /* if_block: IF_TRANSIENT '(' expression ')' '{' instructions '}' ELSE '{' instructions '}' */ #line 649 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-8].exp),(grib_yyvsp[-5].act),(grib_yyvsp[-1].act),1,grib_yylineno,file_being_parsed()); } -#line 3177 "y.tab.c" +#line 3158 "y.tab.c" break; case 145: /* when_block: WHEN '(' expression ')' set semi */ #line 653 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[-3].exp),(grib_yyvsp[-1].act),NULL); } -#line 3183 "y.tab.c" +#line 3164 "y.tab.c" break; case 146: /* when_block: WHEN '(' expression ')' '{' set_list '}' */ #line 654 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act),NULL); } -#line 3189 "y.tab.c" +#line 3170 "y.tab.c" break; case 147: /* when_block: WHEN '(' expression ')' '{' set_list '}' ELSE '{' set_list '}' */ #line 655 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[-8].exp),(grib_yyvsp[-5].act),(grib_yyvsp[-1].act)); } -#line 3195 "y.tab.c" +#line 3176 "y.tab.c" break; case 148: /* set: SET IDENT '=' expression */ #line 658 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),0); free((grib_yyvsp[-2].str)); } -#line 3201 "y.tab.c" +#line 3182 "y.tab.c" break; case 149: /* set: SET_NOFAIL IDENT '=' expression */ #line 659 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),1); free((grib_yyvsp[-2].str)); } -#line 3207 "y.tab.c" +#line 3188 "y.tab.c" break; case 151: /* set_list: set_list set semi */ #line 663 "griby.y" { (grib_yyvsp[-2].act)->next = (grib_yyvsp[-1].act); (grib_yyval.act) = (grib_yyvsp[-2].act); } -#line 3213 "y.tab.c" +#line 3194 "y.tab.c" break; case 152: /* default: empty */ #line 667 "griby.y" { (grib_yyval.explist) = NULL ;} -#line 3219 "y.tab.c" +#line 3200 "y.tab.c" break; case 153: /* default: '=' argument_list */ #line 668 "griby.y" { (grib_yyval.explist) = (grib_yyvsp[0].explist) ;} -#line 3225 "y.tab.c" +#line 3206 "y.tab.c" break; case 154: /* flags: empty */ #line 671 "griby.y" { (grib_yyval.lval) = 0 ; } -#line 3231 "y.tab.c" +#line 3212 "y.tab.c" break; case 155: /* flags: ':' flag_list */ #line 672 "griby.y" { (grib_yyval.lval) = (grib_yyvsp[0].lval); } -#line 3237 "y.tab.c" +#line 3218 "y.tab.c" break; case 157: /* flag_list: flag_list ',' flag */ #line 676 "griby.y" { (grib_yyval.lval) = (grib_yyvsp[-2].lval) | (grib_yyvsp[0].lval); } -#line 3243 "y.tab.c" +#line 3224 "y.tab.c" break; case 158: /* flag: READ_ONLY */ #line 679 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; } -#line 3249 "y.tab.c" +#line 3230 "y.tab.c" break; case 159: /* flag: LOWERCASE */ #line 680 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; } -#line 3255 "y.tab.c" +#line 3236 "y.tab.c" break; case 160: /* flag: DUMP */ #line 681 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; } -#line 3261 "y.tab.c" +#line 3242 "y.tab.c" break; case 161: /* flag: NO_COPY */ #line 682 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; } -#line 3267 "y.tab.c" +#line 3248 "y.tab.c" break; case 162: /* flag: NO_FAIL */ #line 683 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; } -#line 3273 "y.tab.c" +#line 3254 "y.tab.c" break; case 163: /* flag: HIDDEN */ #line 684 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; } -#line 3279 "y.tab.c" +#line 3260 "y.tab.c" break; case 164: /* flag: EDITION_SPECIFIC */ #line 685 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } -#line 3285 "y.tab.c" +#line 3266 "y.tab.c" break; case 165: /* flag: CAN_BE_MISSING */ #line 686 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; } -#line 3291 "y.tab.c" +#line 3272 "y.tab.c" break; case 166: /* flag: CONSTRAINT */ #line 687 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; } -#line 3297 "y.tab.c" +#line 3278 "y.tab.c" break; case 167: /* flag: COPY_OK */ #line 688 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; } -#line 3303 "y.tab.c" +#line 3284 "y.tab.c" break; case 168: /* flag: TRANS */ #line 689 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; } -#line 3309 "y.tab.c" +#line 3290 "y.tab.c" break; case 169: /* flag: STRING_TYPE */ #line 690 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; } -#line 3315 "y.tab.c" +#line 3296 "y.tab.c" break; case 170: /* flag: LONG_TYPE */ #line 691 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; } -#line 3321 "y.tab.c" +#line 3302 "y.tab.c" break; case 171: /* flag: DOUBLE_TYPE */ #line 692 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; } -#line 3327 "y.tab.c" +#line 3308 "y.tab.c" break; case 172: /* list_block: IDENT LIST '(' expression ')' '{' instructions '}' */ #line 695 "griby.y" { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act)); free((grib_yyvsp[-7].str)); } -#line 3333 "y.tab.c" +#line 3314 "y.tab.c" break; case 173: /* while_block: WHILE '(' expression ')' '{' instructions '}' */ #line 698 "griby.y" { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act)); } -#line 3339 "y.tab.c" +#line 3320 "y.tab.c" break; case 174: /* trigger_block: TRIGGER '(' argument_list ')' '{' instructions '}' */ #line 701 "griby.y" { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[-4].explist),(grib_yyvsp[-1].act)); } -#line 3345 "y.tab.c" +#line 3326 "y.tab.c" break; case 175: /* concept_block: CONCEPT IDENT '{' concept_list '}' flags */ #line 704 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-4].str)); } -#line 3351 "y.tab.c" +#line 3332 "y.tab.c" break; case 176: /* concept_block: CONCEPT IDENT '(' IDENT ')' '{' concept_list '}' flags */ #line 705 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,0,(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3357 "y.tab.c" +#line 3338 "y.tab.c" break; case 177: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ #line 706 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3363 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } +#line 3344 "y.tab.c" break; - case 178: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ',' IDENT ')' flags */ + case 178: /* concept_block: CONCEPT IDENT '(' IDENT ',' IDENT ',' IDENT ',' IDENT ')' flags */ #line 707 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-12].str),0,(grib_yyvsp[-8].str),0,(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),(grib_yyvsp[0].lval),0); free((grib_yyvsp[-12].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3369 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } +#line 3350 "y.tab.c" break; - case 179: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ + case 179: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ',' IDENT ')' flags */ #line 708 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); } -#line 3375 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-12].str),0,(grib_yyvsp[-8].str),0,(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),(grib_yyvsp[0].lval),0); free((grib_yyvsp[-12].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } +#line 3356 "y.tab.c" break; - case 180: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ + case 180: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 709 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str)); free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} -#line 3381 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); } +#line 3362 "y.tab.c" break; - case 181: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ + case 181: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ #line 710 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} -#line 3387 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str)); free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} +#line 3368 "y.tab.c" break; - case 182: /* concept_block: CONCEPT IDENT '.' IDENT '{' concept_list '}' flags */ + case 182: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 711 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } -#line 3393 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} +#line 3374 "y.tab.c" break; - case 183: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ + case 183: /* concept_block: CONCEPT IDENT '.' IDENT '{' concept_list '}' flags */ #line 712 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-9].str),(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-9].str));free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3399 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } +#line 3380 "y.tab.c" break; - case 184: /* concept_block: CONCEPT_NOFAIL IDENT '{' concept_list '}' flags */ + case 184: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ #line 713 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-4].str)); } -#line 3405 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-9].str),(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-9].str));free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } +#line 3386 "y.tab.c" break; - case 185: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ')' '{' concept_list '}' flags */ + case 185: /* concept_block: CONCEPT_NOFAIL IDENT '{' concept_list '}' flags */ #line 714 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,0,(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3411 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-4].str)); } +#line 3392 "y.tab.c" break; - case 186: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ + case 186: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ')' '{' concept_list '}' flags */ #line 715 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3417 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,0,(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } +#line 3398 "y.tab.c" break; - case 187: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ + case 187: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ #line 716 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); } -#line 3423 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } +#line 3404 "y.tab.c" break; - case 188: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ + case 188: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 717 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} -#line 3429 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); } +#line 3410 "y.tab.c" break; - case 189: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ + case 189: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ #line 718 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} -#line 3435 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} +#line 3416 "y.tab.c" break; - case 190: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '{' concept_list '}' flags */ + case 190: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 719 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } -#line 3441 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} +#line 3422 "y.tab.c" break; - case 191: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ + case 191: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '{' concept_list '}' flags */ #line 720 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } +#line 3428 "y.tab.c" + break; + + case 192: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ +#line 721 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-9].str),(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-9].str));free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3447 "y.tab.c" +#line 3434 "y.tab.c" break; - case 193: /* concept_list: concept_list concept_value */ -#line 725 "griby.y" + case 194: /* concept_list: concept_list concept_value */ +#line 726 "griby.y" { (grib_yyval.concept_value) = (grib_yyvsp[0].concept_value); (grib_yyvsp[0].concept_value)->next = (grib_yyvsp[-1].concept_value); } -#line 3453 "y.tab.c" +#line 3440 "y.tab.c" break; - case 195: /* hash_array_list: hash_array_list hash_array_value */ -#line 729 "griby.y" + case 196: /* hash_array_list: hash_array_list hash_array_value */ +#line 730 "griby.y" { (grib_yyval.hash_array_value) = (grib_yyvsp[0].hash_array_value); (grib_yyvsp[0].hash_array_value)->next = (grib_yyvsp[-1].hash_array_value); } -#line 3459 "y.tab.c" +#line 3446 "y.tab.c" break; - case 196: /* hash_array_block: HASH_ARRAY IDENT '{' hash_array_list '}' flags */ -#line 732 "griby.y" - { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].hash_array_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-4].str)); } -#line 3465 "y.tab.c" - break; - - case 197: /* hash_array_block: HASH_ARRAY IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ + case 197: /* hash_array_block: HASH_ARRAY IDENT '{' hash_array_list '}' flags */ #line 733 "griby.y" + { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].hash_array_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-4].str)); } +#line 3452 "y.tab.c" + break; + + case 198: /* hash_array_block: HASH_ARRAY IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ +#line 734 "griby.y" { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3471 "y.tab.c" +#line 3458 "y.tab.c" break; - case 199: /* case_list: case_list case_value */ -#line 737 "griby.y" + case 200: /* case_list: case_list case_value */ +#line 738 "griby.y" { (grib_yyval.case_value) = (grib_yyvsp[0].case_value); (grib_yyvsp[0].case_value)->next = (grib_yyvsp[-1].case_value); } -#line 3477 "y.tab.c" +#line 3464 "y.tab.c" break; - case 200: /* case_value: CASE arguments ':' instructions */ -#line 740 "griby.y" + case 201: /* case_value: CASE arguments ':' instructions */ +#line 741 "griby.y" { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[-2].explist),(grib_yyvsp[0].act)); } -#line 3483 "y.tab.c" +#line 3470 "y.tab.c" break; - case 201: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' instructions '}' */ -#line 744 "griby.y" - { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-7].explist),(grib_yyvsp[-4].case_value),(grib_yyvsp[-1].act)); } -#line 3489 "y.tab.c" - break; - - case 202: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' '}' */ + case 202: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' instructions '}' */ #line 745 "griby.y" + { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-7].explist),(grib_yyvsp[-4].case_value),(grib_yyvsp[-1].act)); } +#line 3476 "y.tab.c" + break; + + case 203: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' '}' */ +#line 746 "griby.y" { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-6].explist),(grib_yyvsp[-3].case_value),grib_action_create_noop(grib_parser_context,"continue")); } +#line 3482 "y.tab.c" + break; + + case 204: /* switch_block: SWITCH '(' argument_list ')' '{' case_list '}' */ +#line 747 "griby.y" + { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-4].explist),(grib_yyvsp[-1].case_value),0); } +#line 3488 "y.tab.c" + break; + + case 205: /* concept_value: STRING '=' '{' concept_conditions '}' */ +#line 750 "griby.y" + { + (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].concept_condition)); free((grib_yyvsp[-4].str));} #line 3495 "y.tab.c" break; - case 203: /* switch_block: SWITCH '(' argument_list ')' '{' case_list '}' */ -#line 746 "griby.y" - { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-4].explist),(grib_yyvsp[-1].case_value),0); } -#line 3501 "y.tab.c" - break; - - case 204: /* concept_value: STRING '=' '{' concept_conditions '}' */ -#line 749 "griby.y" - { - (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].concept_condition)); free((grib_yyvsp[-4].str));} -#line 3508 "y.tab.c" - break; - - case 205: /* concept_value: IDENT '=' '{' concept_conditions '}' */ -#line 751 "griby.y" + case 206: /* concept_value: IDENT '=' '{' concept_conditions '}' */ +#line 752 "griby.y" { (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].concept_condition)); free((grib_yyvsp[-4].str));} -#line 3515 "y.tab.c" +#line 3502 "y.tab.c" break; - case 206: /* concept_value: INTEGER '=' '{' concept_conditions '}' */ -#line 753 "griby.y" + case 207: /* concept_value: INTEGER '=' '{' concept_conditions '}' */ +#line 754 "griby.y" { char buf[80]; snprintf(buf, sizeof(buf), "%ld",(long)(grib_yyvsp[-4].lval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[-1].concept_condition));} +#line 3509 "y.tab.c" + break; + + case 208: /* concept_value: FLOAT '=' '{' concept_conditions '}' */ +#line 756 "griby.y" + { + char buf[80]; snprintf(buf, sizeof(buf), "%g", (double)(grib_yyvsp[-4].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[-1].concept_condition));} +#line 3516 "y.tab.c" + break; + + case 210: /* concept_conditions: concept_condition concept_conditions */ +#line 761 "griby.y" + { (grib_yyvsp[-1].concept_condition)->next = (grib_yyvsp[0].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[-1].concept_condition); } #line 3522 "y.tab.c" break; - case 207: /* concept_value: FLOAT '=' '{' concept_conditions '}' */ -#line 755 "griby.y" - { - char buf[80]; snprintf(buf, sizeof(buf), "%g", (double)(grib_yyvsp[-4].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[-1].concept_condition));} -#line 3529 "y.tab.c" - break; - - case 209: /* concept_conditions: concept_condition concept_conditions */ -#line 760 "griby.y" - { (grib_yyvsp[-1].concept_condition)->next = (grib_yyvsp[0].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[-1].concept_condition); } -#line 3535 "y.tab.c" - break; - - case 210: /* concept_condition: IDENT '=' expression ';' */ -#line 763 "griby.y" + case 211: /* concept_condition: IDENT '=' expression ';' */ +#line 764 "griby.y" { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].exp),0); free((grib_yyvsp[-3].str)); } +#line 3528 "y.tab.c" + break; + + case 212: /* concept_condition: IDENT '=' '[' integer_array ']' ';' */ +#line 765 "griby.y" + { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[-5].str),0,(grib_yyvsp[-2].ivalue)); free((grib_yyvsp[-5].str)); } +#line 3534 "y.tab.c" + break; + + case 213: /* hash_array_value: STRING '=' '[' integer_array ']' */ +#line 769 "griby.y" + { + (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].ivalue)); free((grib_yyvsp[-4].str));} #line 3541 "y.tab.c" break; - case 211: /* concept_condition: IDENT '=' '[' integer_array ']' ';' */ -#line 764 "griby.y" - { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[-5].str),0,(grib_yyvsp[-2].ivalue)); free((grib_yyvsp[-5].str)); } -#line 3547 "y.tab.c" + case 214: /* hash_array_value: IDENT '=' '[' integer_array ']' */ +#line 771 "griby.y" + { + (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].ivalue)); free((grib_yyvsp[-4].str));} +#line 3548 "y.tab.c" break; - case 212: /* hash_array_value: STRING '=' '[' integer_array ']' */ -#line 768 "griby.y" - { - (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].ivalue)); free((grib_yyvsp[-4].str));} + case 215: /* string_or_ident: SUBSTR '(' IDENT ',' INTEGER ',' INTEGER ')' */ +#line 775 "griby.y" + { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } #line 3554 "y.tab.c" break; - case 213: /* hash_array_value: IDENT '=' '[' integer_array ']' */ -#line 770 "griby.y" - { - (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].ivalue)); free((grib_yyvsp[-4].str));} -#line 3561 "y.tab.c" - break; - - case 214: /* string_or_ident: SUBSTR '(' IDENT ',' INTEGER ',' INTEGER ')' */ -#line 774 "griby.y" - { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } -#line 3567 "y.tab.c" - break; - - case 215: /* string_or_ident: IDENT */ -#line 775 "griby.y" - { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[0].str),0,0); free((grib_yyvsp[0].str)); } -#line 3573 "y.tab.c" - break; - - case 216: /* string_or_ident: SUBSTR '(' STRING ',' INTEGER ',' INTEGER ')' */ + case 216: /* string_or_ident: IDENT */ #line 776 "griby.y" - { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } -#line 3579 "y.tab.c" + { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[0].str),0,0); free((grib_yyvsp[0].str)); } +#line 3560 "y.tab.c" break; - case 217: /* string_or_ident: STRING */ + case 217: /* string_or_ident: SUBSTR '(' STRING ',' INTEGER ',' INTEGER ')' */ #line 777 "griby.y" + { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } +#line 3566 "y.tab.c" + break; + + case 218: /* string_or_ident: STRING */ +#line 778 "griby.y" { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[0].str)); free((grib_yyvsp[0].str)); } -#line 3585 "y.tab.c" +#line 3572 "y.tab.c" break; - case 219: /* atom: INTEGER */ -#line 781 "griby.y" - { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[0].lval)); } -#line 3591 "y.tab.c" - break; - - case 220: /* atom: FLOAT */ + case 220: /* atom: INTEGER */ #line 782 "griby.y" + { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[0].lval)); } +#line 3578 "y.tab.c" + break; + + case 221: /* atom: FLOAT */ +#line 783 "griby.y" { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[0].dval)); /* TODO: change to new_float_expression*/} -#line 3597 "y.tab.c" +#line 3584 "y.tab.c" break; - case 221: /* atom: NIL */ -#line 784 "griby.y" - { (grib_yyval.exp) = NULL; } -#line 3603 "y.tab.c" - break; - - case 222: /* atom: DUMMY */ + case 222: /* atom: NIL */ #line 785 "griby.y" - { (grib_yyval.exp) = new_true_expression(grib_parser_context); } -#line 3609 "y.tab.c" + { (grib_yyval.exp) = NULL; } +#line 3590 "y.tab.c" break; - case 223: /* atom: '(' expression ')' */ + case 223: /* atom: DUMMY */ #line 786 "griby.y" - { (grib_yyval.exp) = (grib_yyvsp[-1].exp); } -#line 3615 "y.tab.c" + { (grib_yyval.exp) = new_true_expression(grib_parser_context); } +#line 3596 "y.tab.c" break; - case 224: /* atom: '-' atom */ + case 224: /* atom: '(' expression ')' */ #line 787 "griby.y" - { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[0].exp)); } -#line 3621 "y.tab.c" + { (grib_yyval.exp) = (grib_yyvsp[-1].exp); } +#line 3602 "y.tab.c" break; - case 225: /* atom: IDENT '(' ')' */ + case 225: /* atom: '-' atom */ #line 788 "griby.y" - { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[-2].str),NULL); free((grib_yyvsp[-2].str));} -#line 3627 "y.tab.c" + { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[0].exp)); } +#line 3608 "y.tab.c" break; - case 226: /* atom: IDENT '(' argument_list ')' */ + case 226: /* atom: IDENT '(' ')' */ #line 789 "griby.y" + { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[-2].str),NULL); free((grib_yyvsp[-2].str));} +#line 3614 "y.tab.c" + break; + + case 227: /* atom: IDENT '(' argument_list ')' */ +#line 790 "griby.y" { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].explist)); free((grib_yyvsp[-3].str));} -#line 3633 "y.tab.c" +#line 3620 "y.tab.c" break; - case 227: /* power: atom '^' power */ -#line 793 "griby.y" + case 228: /* power: atom '^' power */ +#line 794 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_pow,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3639 "y.tab.c" +#line 3626 "y.tab.c" break; - case 229: /* factor: factor '*' power */ -#line 797 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3645 "y.tab.c" - break; - - case 230: /* factor: factor '/' power */ + case 230: /* factor: factor '*' power */ #line 798 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3651 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3632 "y.tab.c" break; - case 231: /* factor: factor '%' power */ + case 231: /* factor: factor '/' power */ #line 799 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3657 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3638 "y.tab.c" break; - case 232: /* factor: factor BIT power */ + case 232: /* factor: factor '%' power */ #line 800 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3663 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3644 "y.tab.c" break; - case 233: /* factor: factor BITOFF power */ + case 233: /* factor: factor BIT power */ #line 801 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3650 "y.tab.c" + break; + + case 234: /* factor: factor BITOFF power */ +#line 802 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3669 "y.tab.c" +#line 3656 "y.tab.c" break; - case 235: /* factor: LENGTH '(' IDENT ')' */ -#line 803 "griby.y" - { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[-1].str)); free((grib_yyvsp[-1].str));} -#line 3675 "y.tab.c" - break; - - case 236: /* factor: IS_IN_LIST '(' IDENT ',' STRING ')' */ + case 236: /* factor: LENGTH '(' IDENT ')' */ #line 804 "griby.y" - { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} -#line 3681 "y.tab.c" + { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[-1].str)); free((grib_yyvsp[-1].str));} +#line 3662 "y.tab.c" break; - case 237: /* factor: IS_IN_DICT '(' IDENT ',' STRING ')' */ + case 237: /* factor: IS_IN_LIST '(' IDENT ',' STRING ')' */ #line 805 "griby.y" - { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} -#line 3687 "y.tab.c" + { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} +#line 3668 "y.tab.c" break; - case 238: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ')' */ + case 238: /* factor: IS_IN_DICT '(' IDENT ',' STRING ')' */ #line 806 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].lval),0); free((grib_yyvsp[-3].str));} -#line 3693 "y.tab.c" + { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} +#line 3674 "y.tab.c" break; - case 239: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ',' INTEGER ')' */ + case 239: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ')' */ #line 807 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str));} -#line 3699 "y.tab.c" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].lval),0); free((grib_yyvsp[-3].str));} +#line 3680 "y.tab.c" break; - case 240: /* factor: IS_INTEGER '(' IDENT ')' */ + case 240: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ',' INTEGER ')' */ #line 808 "griby.y" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str));} +#line 3686 "y.tab.c" + break; + + case 241: /* factor: IS_INTEGER '(' IDENT ')' */ +#line 809 "griby.y" { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-1].str),0,0); free((grib_yyvsp[-1].str));} -#line 3705 "y.tab.c" +#line 3692 "y.tab.c" break; - case 241: /* term: term '+' factor */ -#line 811 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3711 "y.tab.c" - break; - - case 242: /* term: term '-' factor */ + case 242: /* term: term '+' factor */ #line 812 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3698 "y.tab.c" + break; + + case 243: /* term: term '-' factor */ +#line 813 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_sub,&grib_op_sub_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3717 "y.tab.c" +#line 3704 "y.tab.c" break; - case 244: /* condition: condition GT term */ -#line 816 "griby.y" + case 245: /* condition: condition GT term */ +#line 817 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3723 "y.tab.c" +#line 3710 "y.tab.c" break; - case 245: /* condition: condition EQ term */ -#line 818 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3729 "y.tab.c" - break; - - case 246: /* condition: condition LT term */ + case 246: /* condition: condition EQ term */ #line 819 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3735 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3716 "y.tab.c" break; - case 247: /* condition: condition GE term */ + case 247: /* condition: condition LT term */ #line 820 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3741 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3722 "y.tab.c" break; - case 248: /* condition: condition LE term */ + case 248: /* condition: condition GE term */ #line 821 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3747 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3728 "y.tab.c" break; - case 249: /* condition: condition NE term */ + case 249: /* condition: condition LE term */ #line 822 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3753 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3734 "y.tab.c" break; - case 250: /* condition: string_or_ident IS string_or_ident */ + case 250: /* condition: condition NE term */ #line 823 "griby.y" - { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp),1); } -#line 3759 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3740 "y.tab.c" break; - case 251: /* condition: string_or_ident ISNOT string_or_ident */ + case 251: /* condition: string_or_ident IS string_or_ident */ #line 824 "griby.y" + { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp),1); } +#line 3746 "y.tab.c" + break; + + case 252: /* condition: string_or_ident ISNOT string_or_ident */ +#line 825 "griby.y" { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp),0); } -#line 3765 "y.tab.c" +#line 3752 "y.tab.c" break; - case 252: /* condition: NOT condition */ -#line 829 "griby.y" + case 253: /* condition: NOT condition */ +#line 830 "griby.y" { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[0].exp)); } -#line 3771 "y.tab.c" +#line 3758 "y.tab.c" break; - case 254: /* conjunction: conjunction AND condition */ -#line 833 "griby.y" + case 255: /* conjunction: conjunction AND condition */ +#line 834 "griby.y" { (grib_yyval.exp) = new_logical_and_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3777 "y.tab.c" +#line 3764 "y.tab.c" break; - case 256: /* disjunction: disjunction OR conjunction */ -#line 837 "griby.y" + case 257: /* disjunction: disjunction OR conjunction */ +#line 838 "griby.y" { (grib_yyval.exp) = new_logical_or_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp));} -#line 3783 "y.tab.c" +#line 3770 "y.tab.c" break; - case 261: /* rule_entry: IDENT '=' expression ';' */ -#line 851 "griby.y" - { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].exp)); free((grib_yyvsp[-3].str)); } -#line 3789 "y.tab.c" - break; - - case 262: /* rule_entry: SKIP ';' */ + case 262: /* rule_entry: IDENT '=' expression ';' */ #line 852 "griby.y" + { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].exp)); free((grib_yyvsp[-3].str)); } +#line 3776 "y.tab.c" + break; + + case 263: /* rule_entry: SKIP ';' */ +#line 853 "griby.y" { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);} -#line 3795 "y.tab.c" +#line 3782 "y.tab.c" break; - case 264: /* rule_entries: rule_entry rule_entries */ -#line 856 "griby.y" + case 265: /* rule_entries: rule_entry rule_entries */ +#line 857 "griby.y" { (grib_yyvsp[-1].rule_entry)->next = (grib_yyvsp[0].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[-1].rule_entry); } -#line 3801 "y.tab.c" +#line 3788 "y.tab.c" break; - case 265: /* fact: rule_entry */ -#line 859 "griby.y" + case 266: /* fact: rule_entry */ +#line 860 "griby.y" { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[0].rule_entry)); } -#line 3807 "y.tab.c" +#line 3794 "y.tab.c" break; - case 266: /* conditional_rule: IF '(' expression ')' '{' rule_entries '}' */ -#line 863 "griby.y" + case 267: /* conditional_rule: IF '(' expression ')' '{' rule_entries '}' */ +#line 864 "griby.y" { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].rule_entry)); } -#line 3813 "y.tab.c" +#line 3800 "y.tab.c" break; - case 268: /* rules: rule rules */ -#line 867 "griby.y" + case 269: /* rules: rule rules */ +#line 868 "griby.y" { (grib_yyvsp[-1].rules)->next = (grib_yyvsp[0].rules); (grib_yyval.rules) = (grib_yyvsp[-1].rules); } -#line 3819 "y.tab.c" +#line 3806 "y.tab.c" break; -#line 3823 "y.tab.c" +#line 3810 "y.tab.c" default: break; } @@ -4012,7 +3999,7 @@ grib_yyreturnlab: return grib_yyresult; } -#line 871 "griby.y" +#line 872 "griby.y" static grib_concept_value *_reverse_concept(grib_concept_value *r,grib_concept_value *s) diff --git a/src/griby.y b/src/griby.y index 213843240..c11df7cfd 100644 --- a/src/griby.y +++ b/src/griby.y @@ -703,7 +703,8 @@ trigger_block: TRIGGER '(' argument_list ')' '{' instructions '}' { $$ = grib_ac concept_block: CONCEPT IDENT '{' concept_list '}' flags { $$ = grib_action_create_concept(grib_parser_context,$2,$4,0,0,0,0,0,0,$6,0); free($2); } | CONCEPT IDENT '(' IDENT ')' '{' concept_list '}' flags { $$ = grib_action_create_concept(grib_parser_context,$2,$7,0,0,$4,0,0,0,$9,0); free($2);free($4); } - | CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,$10,0,$12,0); free($2);free($6);free($4);free($8);free($10); } + | CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,$10,0,$12,0); free($2);free($6);free($4);free($8);free($10); } + | CONCEPT IDENT '(' IDENT ',' IDENT ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,$10,0,$12,0); free($2);free($6);free($4);free($8);free($10); } | CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,$10,$12,$14,0); free($2);free($6);free($4);free($8);free($10);free($12); } | CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,0,0,$10,0); free($2);free($6);free($4);free($8); } | CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$4,0,$8,$2,$6,$10,$12,0,$14,0); free($4);free($8);free($6);free($10); free($12); free($2);} From 43454d9c6cd651b5a2b2e220ce119138da7c2eab Mon Sep 17 00:00:00 2001 From: shahramn Date: Fri, 20 Sep 2024 14:29:58 +0100 Subject: [PATCH 20/37] Bump up version --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index f31d783fa..cde8adf34 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.38.0 +2.39.0 From 9126a814f34ca0a13427c8f2f9df27e9fd2c9535 Mon Sep 17 00:00:00 2001 From: shahramn Date: Fri, 20 Sep 2024 17:09:00 +0100 Subject: [PATCH 21/37] ECC-1921: grib_util_set_spec: Failure with input spectral_ieee and bitsPerValue=64 --- src/grib_util.cc | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/grib_util.cc b/src/grib_util.cc index 8e08b3a2d..3cc51079c 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -875,6 +875,20 @@ static int write_out_error_data_file(const double* data_values, size_t data_valu return GRIB_SUCCESS; } +static long get_bitsPerValue_for_packingType(const int specPackingType, const long specBitsPerValue) +{ + if (specPackingType == GRIB_UTIL_PACKING_TYPE_GRID_SIMPLE) { + if (specBitsPerValue > 60) return 60; + } + else if (specPackingType == GRIB_UTIL_PACKING_TYPE_GRID_SECOND_ORDER) { + if (specBitsPerValue > 60) return 32; + } + else if (specPackingType == GRIB_UTIL_PACKING_TYPE_CCSDS) { + if (specBitsPerValue > 32) return 32; + } + return specBitsPerValue; //original +} + static int get_grib_sample_name(grib_handle* h, long editionNumber, const grib_util_grid_spec* spec, const char* grid_type, char* sample_name) { @@ -1341,17 +1355,22 @@ grib_handle* grib_util_set_spec(grib_handle* h, Assert(grib_get_long(h, "bitsPerValue", &bitsPerValue) == 0); SET_LONG_VALUE("bitsPerValue", bitsPerValue); } - } break; + } + break; - case GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES: - SET_LONG_VALUE("bitsPerValue", packing_spec->bitsPerValue); - break; + case GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES: { + // See ECC-1921 + const long bitsPerValue = get_bitsPerValue_for_packingType(packing_spec->packing_type, packing_spec->bitsPerValue); + SET_LONG_VALUE("bitsPerValue", bitsPerValue); + } + break; case GRIB_UTIL_ACCURACY_SAME_DECIMAL_SCALE_FACTOR_AS_INPUT: { long decimalScaleFactor = 0; Assert(grib_get_long(h, "decimalScaleFactor", &decimalScaleFactor) == 0); SET_LONG_VALUE("decimalScaleFactor", decimalScaleFactor); - } break; + } + break; case GRIB_UTIL_ACCURACY_USE_PROVIDED_DECIMAL_SCALE_FACTOR: SET_LONG_VALUE("decimalScaleFactor", packing_spec->decimalScaleFactor); From a0080468f499e879b37eb59400d0574b9965f935 Mon Sep 17 00:00:00 2001 From: shahramn Date: Mon, 23 Sep 2024 12:17:26 +0100 Subject: [PATCH 22/37] ECC-1921: grib_util_set_spec: Print a warning --- src/grib_util.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/grib_util.cc b/src/grib_util.cc index 3cc51079c..a3998926b 100644 --- a/src/grib_util.cc +++ b/src/grib_util.cc @@ -1361,6 +1361,10 @@ grib_handle* grib_util_set_spec(grib_handle* h, case GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES: { // See ECC-1921 const long bitsPerValue = get_bitsPerValue_for_packingType(packing_spec->packing_type, packing_spec->bitsPerValue); + if (bitsPerValue != packing_spec->bitsPerValue) { + fprintf(stderr, "ECCODES WARNING : Cannot pack with requested bitsPerValue (%ld). Using %ld\n", + packing_spec->bitsPerValue, bitsPerValue); + } SET_LONG_VALUE("bitsPerValue", bitsPerValue); } break; From e55c99bb3741cbdc29d57e273d2517091afa9de9 Mon Sep 17 00:00:00 2001 From: shahramn Date: Mon, 23 Sep 2024 16:16:11 +0100 Subject: [PATCH 23/37] HEALPix: Cosmetics --- src/grib_iterator_class_healpix.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grib_iterator_class_healpix.cc b/src/grib_iterator_class_healpix.cc index 6a545b6c5..37757eb76 100644 --- a/src/grib_iterator_class_healpix.cc +++ b/src/grib_iterator_class_healpix.cc @@ -211,7 +211,7 @@ static std::vector HEALPix_longitudes(size_t N, size_t i) return longitudes; } -static int iterate_healpix(grib_iterator_healpix* self, long N) +static int iterate_healpix(grib_iterator_healpix* self, long N, bool nested) { size_t Ny = 4 * static_cast(N) - 1; auto Nd = static_cast(N); @@ -241,7 +241,7 @@ static int iterate_healpix(grib_iterator_healpix* self, long N) // Equator latitudes[2 * N - 1] = 0.0; - if (self->nested) { + if (nested) { if (!is_power_of_2(N)) { grib_context* c = grib_context_get_default(); grib_context_log(c, GRIB_LOG_ERROR, "%s: For nested ordering, Nside must be a power of 2", ITER); @@ -389,7 +389,7 @@ static int init(grib_iterator* iter, grib_handle* h, grib_arguments* args) } try { - err = iterate_healpix(self, N); + err = iterate_healpix(self, N, self->nested); } catch (...) { return GRIB_INTERNAL_ERROR; From a0023ff079eea6a76477bc1d122c8269766753ae Mon Sep 17 00:00:00 2001 From: shahramn Date: Mon, 23 Sep 2024 16:58:53 +0100 Subject: [PATCH 24/37] ECC-1920: Concepts: Also allow namespaces --- src/grib_yacc.cc | 1889 +++++++++++++++++++++++----------------------- src/griby.y | 3 + 2 files changed, 952 insertions(+), 940 deletions(-) diff --git a/src/grib_yacc.cc b/src/grib_yacc.cc index 072b29ae4..500ae175a 100644 --- a/src/grib_yacc.cc +++ b/src/grib_yacc.cc @@ -961,16 +961,16 @@ union grib_yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 214 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1837 +#define YYLAST 1833 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 145 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 50 /* YYNRULES -- Number of rules. */ -#define YYNRULES 269 +#define YYNRULES 270 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 912 +#define YYNSTATES 919 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 382 @@ -1050,15 +1050,16 @@ static const grib_yytype_int16 grib_yyrline[] = 662, 663, 667, 668, 671, 672, 675, 676, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 695, 698, 701, 704, 705, 706, 707, 708, - 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 725, 726, 729, 730, 733, 734, 737, - 738, 741, 745, 746, 747, 750, 752, 754, 756, 760, - 761, 764, 765, 769, 771, 775, 776, 777, 778, 781, - 782, 783, 785, 786, 787, 788, 789, 790, 794, 795, - 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 812, 813, 814, 817, 819, 820, 821, 822, - 823, 824, 825, 830, 831, 834, 835, 838, 839, 842, - 848, 849, 852, 853, 856, 857, 860, 864, 867, 868 + 709, 711, 712, 713, 714, 715, 717, 718, 719, 720, + 721, 722, 723, 724, 728, 729, 732, 733, 736, 737, + 740, 741, 744, 748, 749, 750, 753, 755, 757, 759, + 763, 764, 767, 768, 772, 774, 778, 779, 780, 781, + 784, 785, 786, 788, 789, 790, 791, 792, 793, 797, + 798, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 810, 811, 812, 815, 816, 817, 820, 822, 823, 824, + 825, 826, 827, 828, 833, 834, 837, 838, 841, 842, + 845, 851, 852, 855, 856, 859, 860, 863, 867, 870, + 871 }; #endif @@ -1130,98 +1131,98 @@ grib_yysymbol_name (grib_yysymbol_kind_t grib_yysymbol) STATE-NUM. */ static const grib_yytype_int16 grib_yypact[] = { - 1398, -656, -112, -96, -27, 108, -13, 38, 100, 109, - 140, 160, 172, -4, 177, 207, 171, 214, 220, 242, - 253, 261, 263, 268, 270, 282, 284, 289, 290, 291, - 292, 293, 190, 288, 296, 295, 301, 297, 298, 299, - 302, 308, 310, 313, 314, 316, 317, 319, 312, 322, - 323, -69, -66, -43, 324, 1005, 318, -71, 325, 327, - 315, 333, 334, 337, 338, 339, 336, 352, 353, 354, - 340, 343, 361, 362, 355, 356, 6, 357, 358, -101, - 489, -656, -656, 1501, 364, -656, -656, -656, -656, -656, - -656, 257, 73, -656, -656, -656, -656, 15, -656, -656, - -656, -656, 1005, 1005, 366, 368, 370, 372, 373, 1005, - 374, 88, 365, 375, -656, -656, 1005, -34, 376, 377, - 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, - 365, 365, 365, 365, 379, 384, 195, 380, 387, 388, - 74, 381, -87, -656, 383, 390, 386, 23, 75, 94, - 395, 1005, 391, 406, -656, 389, -656, 396, -656, 148, - 411, 412, 413, 416, -656, -656, 417, 419, 1005, 420, - -656, -656, -656, 1005, -33, -656, -656, -656, 393, 168, - 421, -656, -74, -89, 90, 434, 442, -656, 441, -656, - 436, 395, 445, 395, 443, 446, 448, -656, 447, 455, - 456, 457, 452, 453, 458, 1005, 1005, 1005, 460, 303, - -32, 451, -11, 459, -656, 461, 7, 465, 1710, -656, - -656, 464, 466, 467, -656, 469, 470, -656, 473, 472, - -656, 474, 475, 477, 480, 479, -656, -656, 481, 482, - 1005, 1005, -656, 395, 395, 484, 485, 1005, 493, 395, - 488, 487, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 1005, 494, 498, 499, - 1005, 500, 502, 511, 515, 517, 510, 520, 1005, 602, - 1005, 524, 528, 257, 531, 73, 532, 533, 257, 492, - -656, -656, 491, 89, 1005, 534, 535, 550, 551, 1005, - 541, 561, 562, 563, 205, 90, 797, 559, -656, -656, - 1005, -78, -78, -33, -33, -33, -33, -33, -33, 124, - 124, 124, 124, 124, 124, 124, 124, 1005, 1005, 565, - 1005, -656, 564, -656, 1005, 1005, 1005, 566, 567, 570, - 572, 1005, 1005, 1005, -656, 571, 573, 1005, 575, 576, - 578, 579, 580, 568, 581, 584, 568, 581, 581, 1005, - 590, 395, 581, 1005, 18, -656, 560, 582, 585, 586, - 1005, 1005, 583, 588, -656, 593, 596, 589, 234, 597, - -656, -656, -656, 598, 595, 601, 365, -656, 609, 611, + 1394, -656, -114, -44, -11, 190, -24, 24, 100, 32, + 160, 182, 134, 84, 189, 239, 236, 271, 274, 286, + 294, 300, 302, 303, 308, 309, 311, 313, 314, 317, + 318, 320, 208, 315, 322, 319, 321, 323, 324, 326, + 335, 340, 341, 356, 357, 358, 359, 360, 353, 362, + 363, -67, -62, -21, 364, 903, 361, 277, 365, 366, + 367, 368, 370, 371, 372, 374, 369, 373, 379, 380, + 376, 388, 389, 390, 383, 384, 6, 387, 391, -73, + 491, -656, -656, 1497, 393, -656, -656, -656, -656, -656, + -656, 205, 148, -656, -656, -656, -656, 15, -656, -656, + -656, -656, 903, 903, 394, 398, 407, 392, 410, 903, + 417, 88, 411, 418, -656, -656, 903, 53, 423, 425, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 422, 427, 270, 424, 429, 431, + 224, 426, -76, -656, 430, 435, 428, 23, -54, 94, + 420, 903, 436, 437, -656, 433, -656, 452, -656, 251, + 449, 450, 451, 453, -656, -656, 455, 457, 903, 458, + -656, -656, -656, 903, -33, -656, -656, -656, 456, 265, + 460, -656, -74, 2, 90, 444, 472, -656, 469, -656, + 463, 420, 475, 420, 466, 471, 473, -656, 478, 480, + 481, 482, 479, 483, 485, 903, 903, 903, 486, 304, + -17, 474, 56, 476, -656, 487, 8, 489, 1706, -656, + -656, 488, 490, 493, -656, 495, 497, -656, 501, 500, + -656, 502, 506, 508, 492, 509, -656, -656, 511, 517, + 903, 903, -656, 420, 420, 521, 522, 903, 496, 420, + 525, 528, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 903, 532, 548, 549, + 903, 550, 551, 559, 560, 561, 554, 563, 903, 441, + 903, 568, 569, 205, 570, 148, 571, 572, 205, 306, + -656, -656, 564, 89, 903, 565, 573, 574, 575, 903, + 577, 578, 579, 580, 276, 90, 794, 576, -656, -656, + 903, -78, -78, -33, -33, -33, -33, -33, -33, 124, + 124, 124, 124, 124, 124, 124, 124, 903, 903, 582, + 903, -656, 581, -656, 903, 903, 903, 583, 584, 585, + 586, 903, 903, 903, -656, 587, 588, 903, 590, 591, + 592, 593, 594, 601, 589, 599, 601, 589, 589, 903, + 595, 420, 589, 903, 18, -656, 596, 597, 484, 600, + 903, 903, 598, 602, -656, 605, 607, 603, 278, 604, + -656, -656, -656, 611, 606, 609, 411, -656, 612, 617, -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, 605, 613, 615, 616, 610, 618, - 620, 395, 587, -656, 1005, 621, 395, 271, 395, 614, - -15, 138, -40, 622, -72, 28, 196, 27, -656, -656, + -656, -656, -656, -656, 614, 619, 622, 623, 615, 625, + 626, 420, 618, -656, 903, 627, 420, 282, 420, 620, + -10, -12, -71, 628, -88, 28, 75, -40, -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, 623, -656, -46, -656, 21, -656, -656, 624, - 627, 628, 629, 626, 632, 634, 55, 630, 637, 638, - -656, 635, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -74, -74, -89, -89, -89, -89, -89, - -89, 90, 434, 631, 636, 633, 640, 641, 642, 643, - 647, 652, 654, 646, 655, 661, -656, 612, 663, 1005, - 1005, 1005, 1005, 1005, -656, 130, 653, 619, 581, -656, - 258, 660, 662, 649, 365, -656, 666, 667, 671, 1607, - 1710, 238, 239, 1710, 365, 365, 365, 365, 1710, 365, - 395, 241, 244, 365, 246, 1005, 1095, 365, 1126, 673, - -656, 682, 674, 677, -656, -656, -656, -67, -656, 365, - 275, 675, 686, 257, 395, 687, 395, 688, 678, 691, - 257, 395, 492, 700, 701, 321, 702, -656, -57, -56, - -656, -656, -656, -656, -656, 704, 705, 706, -656, -656, - 707, 708, -656, 703, -656, 395, -656, -656, -656, 709, - 714, 365, 1005, -656, -656, -656, 727, 712, 716, 718, - 721, 723, 728, 711, -656, 853, -656, -656, -656, -656, - -656, 365, 395, -656, 724, 729, 8, 733, -70, 734, - 738, 1005, 395, 1005, 395, 739, 395, 395, 395, 395, - 740, 395, -656, 1005, 395, 1005, 395, 395, 1005, 395, - 365, 1005, 365, 395, 1005, 365, 1005, 395, 365, 1005, - 278, 395, 395, 736, 750, 257, 58, 110, -656, 751, - -656, 752, 257, 59, 117, -656, -656, 732, 747, 702, - -49, -656, 710, -656, 757, -656, 758, 759, 62, 756, - 765, -656, -656, 1005, 1005, -656, 365, 1005, -59, -656, - 1710, 395, 395, 395, 365, 365, -656, 568, 761, 395, - -656, 1710, -70, 762, 879, -656, -656, 889, 767, -656, - 768, -656, -656, -656, -656, -656, -656, -656, -656, 769, - -656, 771, -656, -656, 772, -656, 395, 763, 559, -65, - -656, 773, 395, 777, -656, 395, 778, -656, -656, -656, - -656, 781, 788, 141, 791, 783, 395, 793, 796, 155, - 800, 790, 395, 1005, 1005, 710, 921, 702, -656, -656, - -656, -656, 802, -656, 805, 806, 801, 804, 395, 795, - 803, -656, -656, 807, -656, -656, -656, 395, 395, 265, - -656, -656, 810, 811, 365, 365, 365, 365, 365, -656, - 365, 808, -656, 365, -656, 395, -656, 365, 815, 127, - 395, 821, 257, -656, 822, 129, 395, 824, 257, -656, - -656, -656, 818, 710, 823, 825, 826, -656, -656, -656, - 1710, 1268, -656, -656, -656, 809, 1710, 1710, 395, 395, - 395, 395, 395, 395, 831, 395, -656, 395, 833, 837, - 395, -656, 839, 173, 840, 841, 395, -656, 842, 181, - 321, -656, -656, -656, -656, -656, 830, -656, 832, 834, - -656, -656, -656, -656, -656, -656, 843, -656, -656, 848, - 228, -656, 229, 395, 849, 854, -656, 237, 395, -42, - -656, -656, -656, 395, 395, 846, 395, 851, 395, -656, - 395, 395, 862, 395, -656, -656, -656, -656, 855, -656, - 856, -656, -656, -656, 857, -656, 395, 395, 395, -656, - -656, -656 + -656, -656, 630, -656, -46, -656, 113, -656, -656, 629, + 634, 636, 637, 631, 635, 639, 64, 632, 641, 643, + -656, 640, -656, -656, -656, -656, -656, -656, -656, -656, + -656, -656, -656, -74, -74, 2, 2, 2, 2, 2, + 2, 90, 444, 648, 644, 650, 645, 646, 647, 652, + 657, 664, 670, 663, 667, 668, -656, 661, 671, 903, + 903, 903, 903, 903, -656, -30, 621, 666, 589, -656, + 67, 669, 673, 674, 411, -656, 675, 678, 683, 1603, + 1706, 140, 173, 1706, 411, 411, 411, 411, 1706, 411, + 420, 252, 255, 411, 263, 903, 1037, 411, 1094, 676, + -656, 693, 685, 687, -656, -656, -656, -57, -656, 411, + 288, 689, 705, 205, 420, 682, 420, 706, 694, 708, + 205, 420, 306, 709, 710, 334, 715, -656, -56, -32, + -656, -656, -656, -656, -656, 712, 714, 720, -656, -656, + 721, 723, -656, 702, -656, 420, -656, -656, -656, 724, + 726, 411, 903, -656, -656, -656, 513, 716, 727, 729, + 731, 738, 739, 733, -656, 848, -656, -656, -656, -656, + -656, 411, 420, -656, 737, 740, 13, 741, -72, 742, + 743, 903, 420, 903, 420, 744, 420, 420, 420, 420, + 745, 420, -656, 903, 420, 903, 420, 420, 903, 420, + 411, 903, 411, 420, 903, 411, 903, 420, 411, 903, + 290, 420, 420, 746, 747, 205, 127, 27, -656, 749, + -656, 755, 205, 129, 110, -656, -656, 751, 752, 715, + -48, -656, 762, -656, 767, -656, 760, 764, 158, 768, + 770, -656, -656, 903, 903, -656, 411, 903, -87, -656, + 1706, 420, 420, 420, 411, 411, -656, 601, 771, 420, + -656, 1706, -72, 763, 699, -656, -656, 893, 772, -656, + 773, -656, -656, -656, -656, -656, -656, -656, -656, 779, + -656, 780, -656, -656, 781, -656, 420, 783, 576, -65, + -656, 784, 420, 792, -656, 420, 795, -656, -656, -656, + -656, 790, 805, 117, 296, 796, 420, 806, 810, 141, + 811, 799, 420, 903, 903, 762, 931, 715, -656, -656, + -656, -656, 812, -656, 813, 815, 809, 814, 420, 807, + 816, -656, -656, 819, -656, -656, -656, 420, 420, 130, + -656, -656, 808, 817, 411, 411, 411, 411, 411, -656, + 411, 818, -656, 411, -656, 420, -656, 411, 823, 165, + 420, 824, 829, 205, -656, 830, 177, 420, 831, 205, + -656, -656, -656, 825, 762, 832, 834, 835, -656, -656, + -656, 1706, 1264, -656, -656, -656, 833, 1706, 1706, 420, + 420, 420, 420, 420, 420, 846, 420, -656, 420, 847, + 852, 420, -656, 853, 855, 155, 857, 859, 420, -656, + 860, 175, 334, -656, -656, -656, -656, -656, 849, -656, + 851, 856, -656, -656, -656, -656, -656, -656, 861, -656, + -656, 862, 180, -656, 868, 216, 420, 864, 865, -656, + 229, 420, -42, -656, -656, -656, 420, 420, 866, 420, + 875, 876, 420, -656, 420, 420, 877, 420, -656, -656, + -656, -656, 869, -656, 871, 872, -656, -656, -656, 873, + -656, 420, 420, 420, 420, -656, -656, -656, -656 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1238,28 +1239,28 @@ static const grib_yytype_int16 grib_yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 17, 0, 22, 28, 23, 24, 25, - 26, 3, 4, 27, 29, 193, 195, 268, 266, 260, - 261, 6, 0, 0, 0, 0, 0, 0, 0, 8, + 26, 3, 4, 27, 29, 194, 196, 269, 267, 261, + 262, 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 8, 8, 0, 68, 69, 0, 8, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 110, 0, 88, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 128, 0, 132, 0, 137, 0, - 0, 0, 0, 0, 222, 223, 0, 0, 0, 216, - 218, 220, 221, 0, 0, 32, 119, 33, 34, 219, - 229, 235, 244, 254, 256, 258, 259, 36, 0, 263, + 0, 0, 0, 0, 223, 224, 0, 0, 0, 217, + 219, 221, 222, 0, 0, 32, 119, 33, 34, 220, + 230, 236, 245, 255, 257, 259, 260, 36, 0, 264, 0, 8, 0, 8, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0, 20, 18, - 21, 0, 0, 0, 194, 0, 0, 196, 0, 0, - 269, 0, 0, 0, 0, 0, 107, 108, 0, 0, + 21, 0, 0, 0, 195, 0, 0, 197, 0, 0, + 270, 0, 0, 0, 0, 0, 107, 108, 0, 0, 8, 8, 152, 8, 8, 0, 0, 0, 0, 8, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 122, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 253, 0, 0, 219, 225, + 0, 0, 0, 0, 0, 254, 0, 0, 220, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 106, 0, 105, 8, 8, 8, 0, 0, 0, @@ -1275,62 +1276,62 @@ static const grib_yytype_int16 grib_yydefact[] = 158, 169, 170, 171, 161, 160, 162, 164, 163, 165, 166, 167, 155, 156, 0, 123, 0, 124, 127, 131, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 226, 0, 224, 35, 216, 251, 252, 228, 233, 234, - 230, 231, 232, 243, 242, 246, 250, 248, 249, 247, - 245, 255, 257, 0, 0, 0, 0, 0, 0, 0, + 227, 0, 225, 35, 217, 252, 253, 229, 234, 235, + 231, 232, 233, 244, 243, 247, 251, 249, 250, 248, + 246, 256, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 8, - 8, 8, 8, 8, 15, 0, 0, 0, 209, 262, + 8, 8, 8, 8, 15, 0, 0, 0, 210, 263, 0, 0, 0, 0, 8, 92, 0, 0, 0, 0, 0, 8, 8, 0, 8, 8, 8, 8, 0, 8, 8, 8, 8, 8, 8, 0, 0, 8, 0, 0, 109, 0, 0, 0, 89, 11, 9, 0, 90, 8, 0, 0, 0, 0, 8, 0, 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 13, 0, 0, - 130, 134, 139, 138, 118, 0, 0, 0, 241, 236, - 0, 0, 227, 0, 100, 8, 101, 102, 103, 0, + 130, 134, 139, 138, 118, 0, 0, 0, 242, 237, + 0, 0, 228, 0, 100, 8, 101, 102, 103, 0, 0, 8, 0, 115, 116, 117, 0, 0, 0, 0, - 0, 0, 0, 0, 214, 0, 206, 210, 213, 205, - 207, 8, 8, 208, 0, 0, 0, 0, 264, 0, + 0, 0, 0, 0, 215, 0, 207, 211, 214, 206, + 208, 8, 8, 209, 0, 0, 0, 0, 265, 0, 0, 8, 8, 8, 8, 0, 8, 8, 8, 8, 0, 8, 86, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 175, 0, - 197, 0, 0, 0, 0, 185, 157, 0, 0, 0, + 198, 0, 0, 0, 0, 186, 157, 0, 0, 0, 0, 30, 145, 125, 0, 126, 0, 0, 0, 0, - 0, 120, 104, 8, 8, 96, 8, 0, 0, 199, + 0, 120, 104, 8, 8, 96, 8, 0, 0, 200, 0, 8, 8, 8, 8, 8, 16, 0, 0, 8, - 93, 0, 0, 0, 141, 265, 267, 143, 0, 37, + 93, 0, 0, 0, 141, 266, 268, 143, 0, 37, 0, 39, 174, 41, 48, 43, 51, 173, 87, 0, 52, 0, 54, 85, 0, 49, 8, 0, 36, 8, 60, 0, 8, 0, 111, 8, 0, 12, 10, 91, 67, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 0, 150, 146, 0, 31, 14, - 237, 238, 0, 239, 0, 0, 0, 0, 8, 0, - 0, 204, 200, 0, 44, 46, 45, 8, 8, 0, - 211, 94, 0, 0, 8, 8, 8, 8, 8, 57, + 238, 239, 0, 240, 0, 0, 0, 0, 8, 0, + 0, 205, 201, 0, 44, 46, 45, 8, 8, 0, + 212, 94, 0, 0, 8, 8, 8, 8, 8, 57, 8, 0, 56, 8, 63, 8, 113, 8, 0, 0, - 8, 0, 0, 183, 0, 0, 8, 0, 0, 191, - 148, 149, 0, 151, 0, 0, 0, 97, 98, 65, - 0, 0, 172, 61, 62, 0, 0, 0, 8, 8, - 8, 8, 8, 8, 0, 8, 66, 8, 0, 0, - 8, 176, 0, 0, 0, 0, 8, 186, 0, 0, - 0, 240, 215, 217, 201, 203, 0, 212, 0, 0, - 38, 40, 53, 55, 50, 59, 0, 64, 114, 0, - 0, 180, 0, 8, 0, 0, 188, 0, 8, 0, - 202, 142, 144, 8, 8, 0, 8, 0, 8, 184, - 8, 8, 0, 8, 192, 147, 58, 178, 0, 177, - 0, 182, 198, 187, 0, 190, 8, 8, 8, 179, - 181, 189 + 8, 0, 0, 0, 184, 0, 0, 8, 0, 0, + 192, 148, 149, 0, 151, 0, 0, 0, 97, 98, + 65, 0, 0, 172, 61, 62, 0, 0, 0, 8, + 8, 8, 8, 8, 8, 0, 8, 66, 8, 0, + 0, 8, 176, 0, 0, 0, 0, 0, 8, 187, + 0, 0, 0, 241, 216, 218, 202, 204, 0, 213, + 0, 0, 38, 40, 53, 55, 50, 59, 0, 64, + 114, 0, 0, 180, 0, 0, 8, 0, 0, 189, + 0, 8, 0, 203, 142, 144, 8, 8, 0, 8, + 0, 0, 8, 185, 8, 8, 0, 8, 193, 147, + 58, 178, 0, 177, 0, 0, 183, 199, 188, 0, + 191, 8, 8, 8, 8, 179, 182, 181, 190 }; /* YYPGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yypgoto[] = { - -656, -656, 5, 526, -656, -352, 0, -656, -655, -47, - -308, -202, -656, -656, -656, -443, 123, 549, 216, -656, - 429, -656, -656, -656, -656, -267, 713, -656, -656, 251, - -656, -85, -345, -656, -81, -144, 827, -1, 92, 29, - -161, 668, -656, -94, -656, 10, 382, -656, -656, 898 + -656, -656, 5, 272, -656, -352, 0, -656, -655, -47, + -308, -202, -656, -656, -656, -443, -141, 545, 214, -656, + 445, -656, -656, -656, -656, -263, 700, -656, -656, 301, + -656, -85, -345, -656, -81, -144, 837, 1, 103, 30, + -161, 680, -656, -94, -656, 10, 395, -656, -656, 915 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1349,377 +1350,377 @@ static const grib_yytype_int16 grib_yydefgoto[] = static const grib_yytype_int16 grib_yytable[] = { 82, 566, 463, 344, 510, 81, 224, 305, 231, 232, - 98, 227, 511, 512, 755, 791, 422, 516, 57, 228, - 102, 427, 246, 212, 208, 208, 208, 164, 165, 167, - 308, 563, 564, 213, 563, 564, 103, 276, 563, 564, - 348, 349, 350, 314, 315, 385, 464, 170, 277, 687, - 319, 770, 225, 226, 229, 320, 154, 292, 189, 156, - 175, 650, 238, 155, 351, 556, 157, 316, 317, 318, - 651, 650, 674, 289, 167, 352, 416, 418, 771, 307, - 673, 675, 158, 219, 221, 222, 78, 223, 756, 159, - 565, 169, 170, 171, 172, 895, 247, 554, 356, 173, - 241, 248, 813, 57, 357, 104, 174, 98, 161, 162, - 163, 107, 345, 550, 175, 355, 242, 242, 551, 359, - 114, 115, 242, 241, 360, 242, 242, 242, 242, 242, + 98, 227, 511, 512, 755, 791, 57, 516, 102, 228, + 422, 687, 246, 770, 208, 427, 208, 164, 165, 167, + 308, 208, 563, 564, 563, 564, 225, 226, 563, 564, + 348, 349, 350, 314, 315, 385, 464, 170, 276, 556, + 771, 212, 229, 221, 222, 78, 223, 292, 154, 277, + 175, 213, 238, 156, 351, 155, 554, 316, 317, 318, + 157, 650, 650, 289, 167, 352, 416, 418, 284, 307, + 651, 673, 285, 219, 221, 222, 78, 223, 103, 756, + 565, 169, 170, 171, 172, 899, 674, 561, 603, 173, + 107, 604, 814, 57, 158, 675, 174, 98, 161, 162, + 163, 159, 345, 356, 175, 355, 242, 242, 550, 357, + 552, 104, 242, 551, 553, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 229, - 209, 364, 703, 161, 162, 163, 567, 545, 546, 164, + 209, 319, 364, 161, 162, 163, 320, 703, 108, 164, 165, 221, 222, 78, 223, 281, 557, 513, 282, 283, - 346, 558, 108, 607, 561, 445, 481, 465, 466, 308, + 346, 558, 110, 607, 746, 445, 481, 465, 466, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 577, 164, 165, 744, 750, 578, 166, - 762, 745, 751, 379, 380, 763, 167, 225, 226, 447, - 448, 321, 322, 323, 324, 325, 326, 284, 273, 274, - 168, 285, 175, 169, 170, 171, 172, 242, 365, 404, + 308, 308, 308, 247, 164, 165, 359, 241, 248, 166, + 241, 360, 577, 379, 380, 603, 167, 578, 608, 447, + 448, 321, 322, 323, 324, 325, 326, 559, 114, 115, + 168, 560, 175, 169, 170, 171, 172, 242, 365, 404, 240, 173, 241, 408, 166, 446, 286, 757, 174, 287, - 288, 167, 109, 419, 221, 222, 78, 223, 105, 110, - 106, 221, 222, 78, 223, 175, 175, 746, 169, 170, - 171, 172, 453, 498, 752, 839, 173, 845, 603, 461, - 840, 604, 846, 174, 111, 221, 222, 78, 223, 517, - 552, 175, 297, 298, 553, 175, 518, 355, 800, 221, - 222, 78, 223, 484, 112, 175, 657, 486, 487, 488, - 311, 312, 806, 664, 493, 494, 495, 221, 222, 78, - 223, 118, 113, 119, 175, 221, 222, 78, 223, 116, - 873, 175, 467, 468, 469, 470, 471, 472, 878, 268, - 135, 269, 161, 162, 163, 348, 349, 350, 559, 458, - 459, 117, 560, 640, 642, 175, 645, 224, 120, 175, - 175, 175, 224, 227, 121, 779, 175, 175, 175, 351, - 475, 476, 477, 478, 479, 480, 885, 887, 524, 525, - 352, 886, 888, 164, 165, 892, 122, 542, 621, 623, - 893, 633, 241, 241, 635, 241, 638, 123, 241, 769, - 241, 221, 222, 78, 223, 124, 603, 125, 743, 608, - 686, 242, 126, 603, 127, 749, 825, 545, 546, 653, - 654, 563, 564, 166, 737, 738, 128, 331, 129, 333, - 167, 473, 474, 130, 131, 132, 133, 134, 136, 175, - 137, 140, 141, 142, 168, 138, 143, 169, 170, 171, - 172, 139, 144, 353, 145, 173, 757, 146, 147, 354, - 148, 149, 174, 150, 151, 192, 152, 153, 160, 190, - 188, 191, 598, 599, 600, 601, 602, 193, 194, 381, - 382, 195, 196, 197, 202, 387, 198, 203, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 199, 200, 201, 204, 205, 206, 207, 214, - 233, 210, 211, 220, 234, 428, 235, 236, 237, 241, - 239, 245, 250, 251, 175, 175, 175, 175, 175, 266, - 267, 698, 270, 271, 272, 295, 275, 278, 280, 242, - 620, 310, 296, 625, 279, 293, 242, 242, 630, 242, - 242, 242, 242, 289, 242, 843, 242, 242, 242, 242, - 294, 849, 242, 299, 300, 301, 429, 728, 302, 303, - 728, 304, 306, 327, 242, 430, 431, 432, 433, 434, - 435, 313, 328, 436, 437, 329, 438, 439, 330, 440, - 441, 332, 224, 337, 708, 334, 710, 515, 335, 224, - 336, 338, 339, 340, 341, 342, 719, 358, 721, 212, - 343, 724, 347, 363, 727, 362, 242, 731, 366, 733, - 367, 213, 736, 368, 369, 370, 371, 372, 373, 355, - 374, 375, 376, 378, 377, 383, 242, 386, 384, 388, - 389, 161, 162, 163, 444, 405, 175, 540, 175, 406, - 407, 409, 544, 410, 548, 411, 766, 767, 175, 412, - 175, 413, 414, 175, 415, 242, 175, 242, 420, 175, - 242, 175, 421, 242, 175, 423, 425, 426, 224, 810, - 811, 244, 164, 165, 224, 454, 249, 449, 450, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 451, 452, 455, 456, 457, 175, 175, - 773, 242, 462, 483, 504, 485, 354, 489, 490, 242, - 242, 491, 166, 492, 496, 506, 497, 499, 500, 167, - 501, 502, 503, 509, 514, 353, 356, 521, 357, 519, - 522, 541, 527, 168, 520, 523, 169, 170, 171, 172, - 526, 528, 529, 531, 173, 532, 533, 534, 417, 535, - 536, 174, 538, 537, 539, 543, 632, 549, 596, 570, - 555, 562, 571, 572, 573, 583, 606, 585, 224, 574, - 575, 361, 576, 579, 224, 580, 581, 589, 582, 584, - 658, 590, 660, 586, 587, 588, 591, 665, 592, 593, - 611, 161, 162, 163, 348, 349, 350, 605, 594, 242, - 242, 242, 242, 242, 595, 242, 597, 609, 242, 610, - 614, 682, 242, 613, 615, 646, 647, 648, 351, 649, - 656, 655, 659, 661, 662, 663, 161, 162, 163, 352, - 854, 856, 164, 165, 667, 668, 858, 859, 700, 676, - 677, 671, 678, 679, 680, 687, 681, 696, 709, 758, - 711, 683, 713, 714, 715, 716, 684, 718, 690, 691, - 720, 692, 722, 723, 693, 725, 694, 164, 165, 730, - 701, 695, 166, 734, 741, 702, 753, 739, 740, 167, - 704, 706, 161, 162, 163, 707, 712, 717, 742, 747, - 748, 754, 759, 168, 764, 782, 169, 170, 171, 172, - 780, 760, 761, 765, 173, 783, 790, 166, 784, 785, - 786, 174, 787, 788, 167, 798, 793, 774, 775, 776, - 795, 797, 799, 164, 165, 781, 801, 804, 168, 802, - 805, 169, 170, 171, 172, 807, 808, 812, 814, 173, - 460, 815, 816, 820, 817, 530, 174, 818, 857, 772, - 834, 821, 789, 838, 822, 792, 826, 827, 794, 842, - 844, 796, 848, 166, 850, 866, 851, 869, 852, 853, - 167, 870, 803, 872, 874, 875, 877, 880, 809, 881, - 898, 882, 568, 879, 168, 900, 883, 169, 170, 171, - 172, 884, 890, 697, 819, 173, 904, 891, 906, 907, - 908, 666, 174, 823, 824, 230, 482, 0, 424, 0, - 705, 309, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 836, 0, 0, 0, 0, 841, 0, 0, 0, - 0, 0, 847, 0, 161, 162, 163, 0, 0, 0, + 288, 167, 109, 419, 221, 222, 78, 223, 567, 545, + 546, 221, 222, 78, 223, 175, 175, 752, 169, 170, + 171, 172, 453, 498, 800, 744, 173, 750, 603, 461, + 745, 826, 751, 174, 113, 221, 222, 78, 223, 517, + 621, 175, 225, 226, 241, 175, 518, 355, 807, 221, + 222, 78, 223, 484, 111, 175, 762, 486, 487, 488, + 657, 763, 876, 840, 493, 494, 495, 664, 841, 221, + 222, 78, 223, 623, 175, 847, 112, 241, 888, 428, + 848, 175, 881, 889, 467, 468, 469, 470, 471, 472, + 105, 116, 106, 161, 162, 163, 348, 349, 350, 221, + 222, 78, 223, 640, 642, 175, 645, 224, 135, 175, + 175, 175, 224, 227, 891, 779, 175, 175, 175, 892, + 351, 475, 476, 477, 478, 479, 480, 896, 273, 274, + 429, 352, 897, 117, 164, 165, 118, 542, 119, 430, + 431, 432, 433, 434, 435, 297, 298, 436, 437, 769, + 438, 439, 633, 440, 441, 635, 241, 311, 312, 241, + 686, 242, 743, 638, 268, 120, 269, 241, 121, 749, + 458, 459, 524, 525, 166, 331, 189, 333, 545, 546, + 122, 167, 653, 654, 563, 564, 737, 738, 123, 175, + 801, 802, 473, 474, 124, 168, 125, 126, 169, 170, + 171, 172, 127, 128, 353, 129, 173, 130, 131, 757, + 354, 132, 133, 174, 134, 136, 137, 140, 141, 138, + 142, 139, 598, 599, 600, 601, 602, 381, 382, 143, + 161, 162, 163, 387, 144, 145, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 146, 147, 148, 149, 150, 151, 152, 153, 160, 190, + 191, 214, 193, 188, 194, 195, 196, 192, 197, 198, + 202, 164, 165, 199, 175, 175, 175, 175, 175, 200, + 201, 698, 203, 204, 205, 206, 207, 236, 233, 242, + 620, 210, 220, 625, 234, 211, 242, 242, 630, 242, + 242, 242, 242, 235, 242, 237, 242, 242, 242, 242, + 845, 166, 242, 239, 245, 241, 851, 728, 167, 250, + 728, 251, 266, 267, 242, 271, 270, 272, 289, 295, + 280, 275, 168, 327, 278, 169, 170, 171, 172, 279, + 293, 294, 224, 173, 708, 515, 710, 417, 296, 224, + 174, 299, 300, 301, 310, 302, 719, 303, 721, 304, + 306, 724, 328, 329, 727, 330, 242, 731, 334, 733, + 313, 332, 736, 335, 337, 336, 338, 339, 340, 355, + 358, 341, 362, 212, 353, 342, 242, 343, 347, 363, + 386, 687, 366, 375, 367, 540, 175, 213, 175, 368, + 544, 369, 548, 370, 371, 372, 766, 767, 175, 373, + 175, 374, 376, 175, 377, 242, 175, 242, 378, 175, + 242, 175, 383, 242, 175, 384, 388, 244, 224, 811, + 812, 389, 249, 405, 224, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 406, + 407, 409, 410, 411, 412, 413, 414, 415, 175, 175, + 773, 242, 420, 421, 423, 425, 426, 444, 449, 242, + 242, 454, 455, 456, 457, 782, 450, 451, 452, 462, + 483, 882, 485, 506, 489, 490, 491, 492, 568, 514, + 496, 497, 499, 500, 501, 502, 503, 504, 509, 521, + 356, 522, 354, 357, 519, 527, 531, 526, 520, 523, + 529, 532, 528, 534, 632, 533, 535, 536, 537, 538, + 539, 543, 541, 549, 570, 605, 555, 361, 562, 571, + 224, 572, 573, 575, 574, 579, 224, 576, 658, 580, + 660, 581, 583, 582, 585, 665, 589, 584, 586, 587, + 588, 590, 161, 162, 163, 348, 349, 350, 591, 242, + 242, 242, 242, 242, 592, 242, 593, 596, 242, 682, + 594, 595, 242, 606, 597, 611, 609, 659, 646, 351, + 610, 614, 613, 161, 162, 163, 615, 647, 648, 649, + 352, 856, 858, 164, 165, 655, 700, 860, 861, 656, + 662, 661, 663, 667, 668, 681, 709, 676, 711, 677, + 713, 714, 715, 716, 671, 718, 678, 679, 720, 680, + 722, 723, 690, 725, 164, 165, 683, 730, 684, 696, + 691, 734, 692, 166, 693, 739, 740, 161, 162, 163, + 167, 694, 695, 701, 741, 742, 702, 747, 704, 706, + 707, 712, 717, 748, 168, 753, 754, 169, 170, 171, + 172, 758, 759, 760, 166, 173, 764, 761, 765, 783, + 780, 167, 174, 784, 785, 774, 775, 776, 164, 165, + 786, 787, 788, 781, 798, 168, 790, 793, 169, 170, + 171, 172, 161, 162, 163, 795, 173, 460, 797, 799, + 805, 530, 803, 174, 806, 809, 808, 813, 815, 816, + 789, 817, 818, 792, 827, 821, 794, 819, 166, 796, + 835, 839, 843, 828, 822, 167, 823, 844, 846, 850, + 804, 852, 859, 164, 165, 853, 810, 854, 855, 168, + 868, 871, 169, 170, 171, 172, 872, 874, 697, 875, + 173, 877, 820, 878, 880, 424, 883, 174, 884, 772, + 902, 824, 825, 885, 886, 887, 890, 894, 895, 904, + 905, 909, 911, 166, 912, 913, 914, 666, 482, 837, + 167, 309, 230, 705, 842, 0, 0, 0, 0, 0, + 0, 849, 0, 0, 168, 0, 0, 169, 170, 171, + 172, 0, 0, 0, 0, 173, 0, 0, 0, 0, + 0, 0, 174, 862, 863, 864, 865, 866, 867, 0, + 869, 0, 870, 0, 0, 873, 161, 162, 163, 612, + 0, 0, 879, 0, 0, 0, 622, 624, 0, 626, + 627, 628, 629, 0, 631, 0, 634, 636, 637, 639, + 0, 0, 643, 0, 0, 0, 0, 0, 0, 0, + 893, 0, 0, 0, 652, 898, 0, 164, 165, 0, + 900, 901, 0, 903, 0, 0, 906, 0, 907, 908, + 0, 910, 0, 161, 162, 163, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 915, 916, 917, 918, 0, + 0, 0, 0, 0, 0, 0, 685, 166, 0, 0, + 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 164, 165, 699, 0, 168, 0, + 0, 169, 170, 171, 172, 0, 0, 0, 0, 641, + 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, + 0, 0, 0, 0, 0, 726, 0, 729, 0, 0, + 732, 0, 0, 735, 166, 0, 0, 0, 0, 0, + 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 168, 0, 0, 169, 170, + 171, 172, 0, 0, 0, 0, 644, 0, 0, 0, + 0, 768, 0, 174, 0, 0, 0, 0, 0, 777, + 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 860, 861, 862, 863, 864, 865, - 0, 867, 0, 868, 0, 0, 871, 0, 0, 0, - 0, 0, 876, 612, 0, 164, 165, 0, 0, 0, - 622, 624, 0, 626, 627, 628, 629, 0, 631, 0, - 634, 636, 637, 639, 0, 0, 643, 0, 0, 889, - 0, 0, 0, 0, 894, 0, 0, 0, 652, 896, - 897, 0, 899, 0, 901, 166, 902, 903, 0, 905, - 0, 0, 167, 0, 161, 162, 163, 0, 0, 0, - 0, 0, 909, 910, 911, 0, 168, 0, 0, 169, - 170, 171, 172, 0, 0, 0, 0, 173, 0, 0, - 685, 0, 0, 0, 174, 161, 162, 163, 0, 0, - 0, 0, 0, 0, 0, 164, 165, 0, 0, 0, - 699, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 3, + 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 0, 0, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 0, 45, 46, 0, 0, 47, 0, 0, 829, + 830, 831, 832, 833, 0, 834, 0, 0, 836, 0, + 0, 0, 838, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 0, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 0, 69, 70, 71, 72, 73, + 74, 0, 0, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, + 0, 217, 0, 0, -8, 1, 0, 0, 2, 3, + 0, 857, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 0, 0, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 0, 45, 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 164, 165, 0, 726, - 0, 729, 0, 0, 732, 166, 0, 735, 0, 0, - 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 168, 0, 0, 169, - 170, 171, 172, 0, 0, 0, 166, 641, 0, 0, - 0, 0, 0, 167, 174, 768, 0, 0, 0, 0, - 0, 0, 0, 777, 778, 0, 0, 168, 0, 0, - 169, 170, 171, 172, 0, 0, 0, 0, 644, 0, - 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, - 0, 0, 215, 3, 0, 0, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 0, 0, 0, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 0, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 0, 45, 46, 0, 0, - 47, 0, 0, 828, 829, 830, 831, 832, 0, 833, - 0, 0, 835, 0, 0, 0, 837, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 0, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 0, 69, - 70, 71, 72, 73, 74, 0, 0, 75, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 216, 0, 0, 217, 0, 0, -8, 1, - 0, 0, 2, 3, 0, 855, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 0, 0, 0, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 0, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 0, 45, 46, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 0, 69, - 70, 71, 72, 73, 74, 215, 3, 75, 0, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, - 0, 0, 76, 77, 78, 79, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 0, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 0, 45, - 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 0, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 0, 69, 70, 71, 72, 73, 74, 0, 0, - 75, 215, 3, 0, 0, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 216, 0, 0, 217, 0, - 218, 0, 14, 15, 16, 17, 18, 19, 20, 21, + 0, 0, 0, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 0, 69, 70, 71, 72, 73, + 74, 215, 3, 75, 0, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 76, 77, + 78, 79, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, 45, 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 52, 53, 54, 55, 56, 0, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, 69, 70, - 71, 72, 73, 74, 215, 3, 75, 0, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 616, 0, 0, 217, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 0, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 0, 45, 46, - 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 0, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 0, 69, 70, 71, 72, 73, 74, 0, 0, 75, + 71, 72, 73, 74, 0, 0, 75, 215, 3, 0, + 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 216, 0, 0, 217, 0, 218, 0, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 0, 45, 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 216, 0, 0, 217 + 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 0, 69, 70, 71, 72, 73, 74, + 215, 3, 75, 0, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 0, 0, 0, 616, 0, 0, + 217, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 0, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 0, 45, 46, 0, 0, 47, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 0, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 0, 69, 70, 71, + 72, 73, 74, 0, 0, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 0, 217 }; static const grib_yytype_int16 grib_yycheck[] = { 0, 444, 310, 205, 356, 0, 91, 168, 102, 103, - 0, 92, 357, 358, 669, 80, 283, 362, 88, 4, - 132, 288, 116, 124, 18, 18, 18, 60, 61, 107, - 174, 80, 81, 134, 80, 81, 132, 124, 80, 81, - 22, 23, 24, 117, 118, 247, 124, 125, 135, 108, - 139, 110, 124, 125, 124, 144, 125, 151, 129, 125, - 55, 128, 109, 132, 46, 137, 132, 141, 142, 143, - 137, 128, 128, 138, 107, 57, 278, 279, 137, 173, - 137, 137, 125, 83, 124, 125, 126, 127, 137, 132, - 136, 124, 125, 126, 127, 137, 130, 137, 130, 132, - 134, 135, 757, 88, 136, 132, 139, 97, 19, 20, - 21, 124, 206, 128, 109, 209, 111, 112, 133, 130, - 124, 125, 117, 134, 135, 120, 121, 122, 123, 124, + 0, 92, 357, 358, 669, 80, 88, 362, 132, 4, + 283, 108, 116, 110, 18, 288, 18, 60, 61, 107, + 174, 18, 80, 81, 80, 81, 124, 125, 80, 81, + 22, 23, 24, 117, 118, 247, 124, 125, 124, 137, + 137, 124, 124, 124, 125, 126, 127, 151, 125, 135, + 55, 134, 109, 125, 46, 132, 137, 141, 142, 143, + 132, 128, 128, 138, 107, 57, 278, 279, 132, 173, + 137, 137, 136, 83, 124, 125, 126, 127, 132, 137, + 136, 124, 125, 126, 127, 137, 128, 137, 128, 132, + 124, 131, 757, 88, 125, 137, 139, 97, 19, 20, + 21, 132, 206, 130, 109, 209, 111, 112, 128, 136, + 132, 132, 117, 133, 136, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 124, - 134, 134, 134, 19, 20, 21, 125, 126, 127, 60, + 134, 139, 134, 19, 20, 21, 144, 134, 124, 60, 61, 124, 125, 126, 127, 132, 128, 359, 135, 136, - 207, 133, 124, 508, 137, 76, 327, 311, 312, 313, + 207, 133, 130, 508, 137, 76, 327, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 128, 60, 61, 128, 128, 133, 100, - 128, 133, 133, 240, 241, 133, 107, 124, 125, 293, - 294, 111, 112, 113, 114, 115, 116, 132, 134, 135, + 324, 325, 326, 130, 60, 61, 130, 134, 135, 100, + 134, 135, 128, 240, 241, 128, 107, 133, 131, 293, + 294, 111, 112, 113, 114, 115, 116, 132, 124, 125, 121, 136, 207, 124, 125, 126, 127, 212, 218, 266, 132, 132, 134, 270, 100, 136, 132, 670, 139, 135, - 136, 107, 132, 280, 124, 125, 126, 127, 130, 130, - 132, 124, 125, 126, 127, 240, 241, 137, 124, 125, + 136, 107, 132, 280, 124, 125, 126, 127, 125, 126, + 127, 124, 125, 126, 127, 240, 241, 137, 124, 125, 126, 127, 299, 347, 137, 128, 132, 128, 128, 306, - 133, 131, 133, 139, 124, 124, 125, 126, 127, 363, - 132, 266, 124, 125, 136, 270, 370, 371, 137, 124, - 125, 126, 127, 330, 124, 280, 553, 334, 335, 336, - 122, 123, 137, 560, 341, 342, 343, 124, 125, 126, - 127, 130, 130, 132, 299, 124, 125, 126, 127, 132, - 137, 306, 313, 314, 315, 316, 317, 318, 137, 124, - 130, 126, 19, 20, 21, 22, 23, 24, 132, 124, - 125, 124, 136, 535, 536, 330, 538, 422, 124, 334, - 335, 336, 427, 424, 124, 697, 341, 342, 343, 46, - 321, 322, 323, 324, 325, 326, 128, 128, 124, 125, - 57, 133, 133, 60, 61, 128, 124, 414, 130, 130, - 133, 130, 134, 134, 130, 134, 130, 124, 134, 687, - 134, 124, 125, 126, 127, 124, 128, 124, 655, 131, - 592, 386, 124, 128, 124, 662, 131, 126, 127, 124, - 125, 80, 81, 100, 126, 127, 124, 191, 124, 193, - 107, 319, 320, 124, 124, 124, 124, 124, 130, 414, - 124, 124, 124, 124, 121, 130, 124, 124, 125, 126, - 127, 130, 124, 130, 124, 132, 879, 124, 124, 136, - 124, 124, 139, 124, 132, 130, 124, 124, 124, 124, - 132, 124, 499, 500, 501, 502, 503, 124, 124, 243, - 244, 124, 124, 124, 124, 249, 130, 124, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 130, 130, 130, 124, 124, 132, 132, 0, - 124, 134, 134, 129, 126, 3, 126, 125, 125, 134, - 126, 126, 126, 126, 499, 500, 501, 502, 503, 130, - 126, 605, 132, 126, 126, 126, 135, 134, 132, 514, - 520, 128, 126, 523, 134, 134, 521, 522, 528, 524, - 525, 526, 527, 138, 529, 802, 531, 532, 533, 534, - 134, 808, 537, 132, 132, 132, 54, 641, 132, 132, - 644, 132, 132, 119, 549, 63, 64, 65, 66, 67, - 68, 140, 120, 71, 72, 124, 74, 75, 132, 77, - 78, 126, 657, 126, 621, 132, 623, 361, 132, 664, - 132, 126, 126, 126, 132, 132, 633, 136, 635, 124, - 132, 638, 132, 132, 641, 136, 591, 644, 134, 646, - 134, 134, 649, 134, 134, 132, 134, 133, 133, 703, - 133, 131, 133, 131, 133, 131, 611, 124, 133, 131, - 133, 19, 20, 21, 133, 131, 621, 411, 623, 131, - 131, 131, 416, 131, 418, 124, 683, 684, 633, 124, - 635, 124, 132, 638, 124, 640, 641, 642, 124, 644, - 645, 646, 124, 648, 649, 124, 124, 124, 743, 753, - 754, 112, 60, 61, 749, 124, 117, 133, 133, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 133, 133, 124, 124, 124, 683, 684, - 690, 686, 133, 128, 126, 131, 136, 131, 131, 694, - 695, 131, 100, 131, 133, 124, 133, 132, 132, 107, - 132, 132, 132, 129, 124, 130, 130, 124, 136, 136, - 124, 134, 124, 121, 136, 136, 124, 125, 126, 127, - 133, 136, 131, 124, 132, 124, 131, 124, 136, 124, - 124, 139, 124, 133, 124, 124, 530, 133, 136, 125, - 128, 128, 125, 125, 125, 124, 137, 124, 843, 133, - 128, 212, 128, 133, 849, 128, 128, 124, 133, 133, - 554, 124, 556, 133, 133, 133, 124, 561, 124, 133, - 131, 19, 20, 21, 22, 23, 24, 134, 133, 784, - 785, 786, 787, 788, 133, 790, 133, 137, 793, 137, - 133, 585, 797, 137, 133, 132, 124, 133, 46, 132, - 124, 136, 125, 125, 136, 124, 19, 20, 21, 57, - 820, 821, 60, 61, 124, 124, 826, 827, 612, 125, - 125, 129, 126, 126, 126, 108, 133, 126, 622, 129, - 624, 132, 626, 627, 628, 629, 132, 631, 136, 133, - 634, 133, 636, 637, 133, 639, 133, 60, 61, 643, - 136, 133, 100, 647, 128, 136, 134, 651, 652, 107, - 137, 137, 19, 20, 21, 137, 137, 137, 128, 128, - 128, 134, 125, 121, 128, 6, 124, 125, 126, 127, - 129, 133, 133, 128, 132, 6, 133, 100, 131, 131, - 131, 139, 131, 131, 107, 124, 133, 691, 692, 693, - 133, 133, 124, 60, 61, 699, 125, 124, 121, 136, - 124, 124, 125, 126, 127, 125, 136, 6, 126, 132, - 133, 126, 126, 138, 133, 386, 139, 133, 129, 688, - 132, 138, 726, 128, 137, 729, 136, 136, 732, 128, - 128, 735, 128, 100, 136, 124, 133, 124, 133, 133, - 107, 124, 746, 124, 124, 124, 124, 137, 752, 137, - 124, 137, 446, 850, 121, 124, 133, 124, 125, 126, - 127, 133, 133, 130, 768, 132, 124, 133, 133, 133, - 133, 562, 139, 777, 778, 97, 328, -1, 285, -1, - 618, 174, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 795, -1, -1, -1, -1, 800, -1, -1, -1, - -1, -1, 806, -1, 19, 20, 21, -1, -1, -1, + 133, 131, 133, 139, 130, 124, 125, 126, 127, 363, + 130, 266, 124, 125, 134, 270, 370, 371, 137, 124, + 125, 126, 127, 330, 124, 280, 128, 334, 335, 336, + 553, 133, 137, 128, 341, 342, 343, 560, 133, 124, + 125, 126, 127, 130, 299, 128, 124, 134, 128, 3, + 133, 306, 137, 133, 313, 314, 315, 316, 317, 318, + 130, 132, 132, 19, 20, 21, 22, 23, 24, 124, + 125, 126, 127, 535, 536, 330, 538, 422, 130, 334, + 335, 336, 427, 424, 128, 697, 341, 342, 343, 133, + 46, 321, 322, 323, 324, 325, 326, 128, 134, 135, + 54, 57, 133, 124, 60, 61, 130, 414, 132, 63, + 64, 65, 66, 67, 68, 124, 125, 71, 72, 687, + 74, 75, 130, 77, 78, 130, 134, 122, 123, 134, + 592, 386, 655, 130, 124, 124, 126, 134, 124, 662, + 124, 125, 124, 125, 100, 191, 129, 193, 126, 127, + 124, 107, 124, 125, 80, 81, 126, 127, 124, 414, + 124, 125, 319, 320, 124, 121, 124, 124, 124, 125, + 126, 127, 124, 124, 130, 124, 132, 124, 124, 882, + 136, 124, 124, 139, 124, 130, 124, 124, 124, 130, + 124, 130, 499, 500, 501, 502, 503, 243, 244, 124, + 19, 20, 21, 249, 124, 124, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 124, 124, 124, 124, 124, 132, 124, 124, 124, 124, + 124, 0, 124, 132, 124, 124, 124, 130, 124, 130, + 124, 60, 61, 130, 499, 500, 501, 502, 503, 130, + 130, 605, 124, 124, 124, 132, 132, 125, 124, 514, + 520, 134, 129, 523, 126, 134, 521, 522, 528, 524, + 525, 526, 527, 126, 529, 125, 531, 532, 533, 534, + 803, 100, 537, 126, 126, 134, 809, 641, 107, 126, + 644, 126, 130, 126, 549, 126, 132, 126, 138, 126, + 132, 135, 121, 119, 134, 124, 125, 126, 127, 134, + 134, 134, 657, 132, 621, 361, 623, 136, 126, 664, + 139, 132, 132, 132, 128, 132, 633, 132, 635, 132, + 132, 638, 120, 124, 641, 132, 591, 644, 132, 646, + 140, 126, 649, 132, 126, 132, 126, 126, 126, 703, + 136, 132, 136, 124, 130, 132, 611, 132, 132, 132, + 124, 108, 134, 131, 134, 411, 621, 134, 623, 134, + 416, 134, 418, 132, 134, 133, 683, 684, 633, 133, + 635, 133, 133, 638, 133, 640, 641, 642, 131, 644, + 645, 646, 131, 648, 649, 133, 131, 112, 743, 753, + 754, 133, 117, 131, 749, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 131, + 131, 131, 131, 124, 124, 124, 132, 124, 683, 684, + 690, 686, 124, 124, 124, 124, 124, 133, 133, 694, + 695, 124, 124, 124, 124, 6, 133, 133, 133, 133, + 128, 852, 131, 124, 131, 131, 131, 131, 446, 124, + 133, 133, 132, 132, 132, 132, 132, 126, 129, 124, + 130, 124, 136, 136, 136, 124, 124, 133, 136, 136, + 131, 124, 136, 124, 530, 131, 124, 124, 133, 124, + 124, 124, 134, 133, 125, 134, 128, 212, 128, 125, + 845, 125, 125, 128, 133, 133, 851, 128, 554, 128, + 556, 128, 124, 133, 124, 561, 124, 133, 133, 133, + 133, 124, 19, 20, 21, 22, 23, 24, 124, 784, + 785, 786, 787, 788, 124, 790, 133, 136, 793, 585, + 133, 133, 797, 137, 133, 131, 137, 125, 132, 46, + 137, 133, 137, 19, 20, 21, 133, 124, 133, 132, + 57, 821, 822, 60, 61, 136, 612, 827, 828, 124, + 136, 125, 124, 124, 124, 133, 622, 125, 624, 125, + 626, 627, 628, 629, 129, 631, 126, 126, 634, 126, + 636, 637, 136, 639, 60, 61, 132, 643, 132, 126, + 133, 647, 133, 100, 133, 651, 652, 19, 20, 21, + 107, 133, 133, 136, 128, 128, 136, 128, 137, 137, + 137, 137, 137, 128, 121, 134, 134, 124, 125, 126, + 127, 129, 125, 133, 100, 132, 128, 133, 128, 6, + 129, 107, 139, 131, 131, 691, 692, 693, 60, 61, + 131, 131, 131, 699, 124, 121, 133, 133, 124, 125, + 126, 127, 19, 20, 21, 133, 132, 133, 133, 124, + 124, 386, 136, 139, 124, 136, 125, 6, 126, 126, + 726, 126, 133, 729, 136, 138, 732, 133, 100, 735, + 132, 128, 128, 136, 138, 107, 137, 128, 128, 128, + 746, 136, 129, 60, 61, 133, 752, 133, 133, 121, + 124, 124, 124, 125, 126, 127, 124, 124, 130, 124, + 132, 124, 768, 124, 124, 285, 137, 139, 137, 688, + 124, 777, 778, 137, 133, 133, 128, 133, 133, 124, + 124, 124, 133, 100, 133, 133, 133, 562, 328, 795, + 107, 174, 97, 618, 800, -1, -1, -1, -1, -1, + -1, 807, -1, -1, 121, -1, -1, 124, 125, 126, + 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, + -1, -1, 139, 829, 830, 831, 832, 833, 834, -1, + 836, -1, 838, -1, -1, 841, 19, 20, 21, 514, + -1, -1, 848, -1, -1, -1, 521, 522, -1, 524, + 525, 526, 527, -1, 529, -1, 531, 532, 533, 534, + -1, -1, 537, -1, -1, -1, -1, -1, -1, -1, + 876, -1, -1, -1, 549, 881, -1, 60, 61, -1, + 886, 887, -1, 889, -1, -1, 892, -1, 894, 895, + -1, 897, -1, 19, 20, 21, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 911, 912, 913, 914, -1, + -1, -1, -1, -1, -1, -1, 591, 100, -1, -1, + -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 60, 61, 611, -1, 121, -1, + -1, 124, 125, 126, 127, -1, -1, -1, -1, 132, + -1, -1, -1, -1, -1, -1, 139, -1, -1, -1, + -1, -1, -1, -1, -1, 640, -1, 642, -1, -1, + 645, -1, -1, 648, 100, -1, -1, -1, -1, -1, + -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 121, -1, -1, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, 686, -1, 139, -1, -1, -1, -1, -1, 694, + 695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 828, 829, 830, 831, 832, 833, - -1, 835, -1, 837, -1, -1, 840, -1, -1, -1, - -1, -1, 846, 514, -1, 60, 61, -1, -1, -1, - 521, 522, -1, 524, 525, 526, 527, -1, 529, -1, - 531, 532, 533, 534, -1, -1, 537, -1, -1, 873, - -1, -1, -1, -1, 878, -1, -1, -1, 549, 883, - 884, -1, 886, -1, 888, 100, 890, 891, -1, 893, - -1, -1, 107, -1, 19, 20, 21, -1, -1, -1, - -1, -1, 906, 907, 908, -1, 121, -1, -1, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - 591, -1, -1, -1, 139, 19, 20, 21, -1, -1, - -1, -1, -1, -1, -1, 60, 61, -1, -1, -1, - 611, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, + -1, -1, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, -1, -1, -1, -1, -1, -1, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, -1, 58, 59, -1, -1, 62, -1, -1, 784, + 785, 786, 787, 788, -1, 790, -1, -1, 793, -1, + -1, -1, 797, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, + 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, + -1, 127, -1, -1, 0, 1, -1, -1, 4, 5, + -1, 137, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, -1, -1, -1, -1, -1, -1, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, -1, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 60, 61, -1, 640, - -1, 642, -1, -1, 645, 100, -1, 648, -1, -1, - -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 121, -1, -1, 124, - 125, 126, 127, -1, -1, -1, 100, 132, -1, -1, - -1, -1, -1, 107, 139, 686, -1, -1, -1, -1, - -1, -1, -1, 694, 695, -1, -1, 121, -1, -1, - 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, - -1, -1, -1, -1, -1, 139, -1, -1, -1, -1, - -1, -1, 4, 5, -1, -1, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, -1, -1, -1, -1, - -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, -1, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, - 62, -1, -1, 784, 785, 786, 787, 788, -1, 790, - -1, -1, 793, -1, -1, -1, 797, 79, 80, 81, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, -1, 101, - 102, 103, 104, 105, 106, -1, -1, 109, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, -1, -1, 127, -1, -1, 0, 1, - -1, -1, 4, 5, -1, 137, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, -1, -1, -1, -1, - -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, -1, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, -1, 101, - 102, 103, 104, 105, 106, 4, 5, 109, -1, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, - -1, -1, 124, 125, 126, 127, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, -1, -1, - 109, 4, 5, -1, -1, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 124, -1, -1, 127, -1, - 129, -1, 25, 26, 27, 28, 29, 30, 31, 32, + -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, + 106, 4, 5, 109, -1, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, -1, -1, -1, 124, 125, + 126, 127, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 4, 5, 109, -1, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, -1, -1, - -1, 124, -1, -1, 127, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, -1, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - -1, 101, 102, 103, 104, 105, 106, -1, -1, 109, + 103, 104, 105, 106, -1, -1, 109, 4, 5, -1, + -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 124, -1, -1, 127, -1, 129, -1, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, -1, -1, 127 + -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, + 4, 5, 109, -1, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, -1, -1, -1, 124, -1, -1, + 127, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, -1, 58, 59, -1, -1, 62, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, + 104, 105, 106, -1, -1, 109, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 124, -1, -1, 127 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1806,18 +1807,18 @@ static const grib_yytype_uint8 grib_yystos[] = 110, 137, 174, 151, 163, 163, 163, 162, 162, 150, 129, 163, 6, 6, 131, 131, 131, 131, 131, 163, 133, 80, 163, 133, 163, 133, 163, 133, 124, 124, - 137, 125, 136, 163, 124, 124, 137, 125, 136, 163, - 188, 188, 6, 153, 126, 126, 126, 133, 133, 163, - 138, 138, 137, 163, 163, 131, 136, 136, 162, 162, - 162, 162, 162, 162, 132, 162, 163, 162, 128, 128, - 133, 163, 128, 170, 128, 128, 133, 163, 128, 170, - 136, 133, 133, 133, 151, 137, 151, 129, 151, 151, - 163, 163, 163, 163, 163, 163, 124, 163, 163, 124, - 124, 163, 124, 137, 124, 124, 163, 124, 137, 161, - 137, 137, 137, 133, 133, 128, 133, 128, 133, 163, - 133, 133, 128, 133, 163, 137, 163, 163, 124, 163, - 124, 163, 163, 163, 124, 163, 133, 133, 133, 163, - 163, 163 + 137, 124, 125, 136, 163, 124, 124, 137, 125, 136, + 163, 188, 188, 6, 153, 126, 126, 126, 133, 133, + 163, 138, 138, 137, 163, 163, 131, 136, 136, 162, + 162, 162, 162, 162, 162, 132, 162, 163, 162, 128, + 128, 133, 163, 128, 128, 170, 128, 128, 133, 163, + 128, 170, 136, 133, 133, 133, 151, 137, 151, 129, + 151, 151, 163, 163, 163, 163, 163, 163, 124, 163, + 163, 124, 124, 163, 124, 124, 137, 124, 124, 163, + 124, 137, 161, 137, 137, 137, 133, 133, 128, 133, + 128, 128, 133, 163, 133, 133, 128, 133, 163, 137, + 163, 163, 124, 163, 124, 124, 163, 163, 163, 124, + 163, 133, 133, 133, 133, 163, 163, 163, 163 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1842,14 +1843,15 @@ static const grib_yytype_uint8 grib_yyr1[] = 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 167, 168, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 169, 170, 170, 171, 171, 172, 172, 173, - 173, 174, 175, 175, 175, 176, 176, 176, 176, 177, - 177, 178, 178, 179, 179, 180, 180, 180, 180, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 184, 184, 184, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 186, 186, 187, 187, 188, - 189, 189, 190, 190, 191, 191, 192, 193, 194, 194 + 169, 169, 169, 169, 170, 170, 171, 171, 172, 172, + 173, 173, 174, 175, 175, 175, 176, 176, 176, 176, + 177, 177, 178, 178, 179, 179, 180, 180, 180, 180, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, + 182, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 184, 184, 184, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 186, 186, 187, 187, + 188, 189, 189, 190, 190, 191, 191, 192, 193, 194, + 194 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1873,15 +1875,16 @@ static const grib_yytype_int8 grib_yyr2[] = 2, 3, 1, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 7, 7, 6, 9, 12, 12, 14, - 10, 14, 12, 8, 11, 6, 9, 12, 10, 14, - 12, 8, 11, 1, 2, 1, 2, 6, 12, 1, - 2, 4, 10, 9, 7, 5, 5, 5, 5, 1, - 2, 4, 6, 5, 5, 8, 1, 8, 1, 1, - 1, 1, 1, 1, 3, 2, 3, 4, 3, 1, - 3, 3, 3, 3, 3, 1, 4, 6, 6, 6, - 8, 4, 3, 3, 1, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 1, 3, 1, 3, 1, 1, - 1, 1, 4, 2, 1, 2, 1, 7, 1, 2 + 10, 14, 14, 12, 8, 11, 6, 9, 12, 10, + 14, 12, 8, 11, 1, 2, 1, 2, 6, 12, + 1, 2, 4, 10, 9, 7, 5, 5, 5, 5, + 1, 2, 4, 6, 5, 5, 8, 1, 8, 1, + 1, 1, 1, 1, 1, 3, 2, 3, 4, 3, + 1, 3, 3, 3, 3, 3, 1, 4, 6, 6, + 6, 8, 4, 3, 3, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 2, 1, 3, 1, 3, 1, + 1, 1, 1, 4, 2, 1, 2, 1, 7, 1, + 2 }; @@ -2348,242 +2351,242 @@ grib_yyreduce: #line 263 "griby.y" { grib_parser_all_actions = 0;grib_parser_concept=0; grib_parser_hash_array=0;grib_parser_rules=0; } -#line 2352 "y.tab.c" +#line 2355 "y.tab.c" break; case 3: /* all: concept_list */ #line 265 "griby.y" { grib_parser_concept = reverse_concept((grib_yyvsp[0].concept_value)); } -#line 2358 "y.tab.c" +#line 2361 "y.tab.c" break; case 4: /* all: hash_array_list */ #line 266 "griby.y" { grib_parser_hash_array = reverse_hash_array((grib_yyvsp[0].hash_array_value)); } -#line 2364 "y.tab.c" +#line 2367 "y.tab.c" break; case 5: /* all: instructions */ #line 267 "griby.y" { grib_parser_all_actions = (grib_yyvsp[0].act); } -#line 2370 "y.tab.c" +#line 2373 "y.tab.c" break; case 6: /* all: rules */ #line 268 "griby.y" { grib_parser_rules = (grib_yyvsp[0].rules); } -#line 2376 "y.tab.c" +#line 2379 "y.tab.c" break; case 7: /* all: error */ #line 270 "griby.y" { grib_parser_all_actions = 0; grib_parser_concept=0; grib_parser_hash_array=0; grib_parser_rules=0; } -#line 2383 "y.tab.c" +#line 2386 "y.tab.c" break; case 9: /* dvalues: FLOAT */ #line 277 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,0,(grib_yyvsp[0].dval));} -#line 2389 "y.tab.c" +#line 2392 "y.tab.c" break; case 10: /* dvalues: dvalues ',' FLOAT */ #line 278 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,(grib_yyvsp[-2].dvalue),(grib_yyvsp[0].dval));} -#line 2395 "y.tab.c" +#line 2398 "y.tab.c" break; case 11: /* dvalues: INTEGER */ #line 279 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,0,(grib_yyvsp[0].lval));} -#line 2401 "y.tab.c" +#line 2404 "y.tab.c" break; case 12: /* dvalues: dvalues ',' INTEGER */ #line 280 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(grib_parser_context,(grib_yyvsp[-2].dvalue),(grib_yyvsp[0].lval));} -#line 2407 "y.tab.c" +#line 2410 "y.tab.c" break; case 13: /* svalues: STRING */ #line 283 "griby.y" { (grib_yyval.svalue)=grib_sarray_push(grib_parser_context,0,(grib_yyvsp[0].str));} -#line 2413 "y.tab.c" +#line 2416 "y.tab.c" break; case 14: /* svalues: svalues ',' STRING */ #line 284 "griby.y" { (grib_yyval.svalue)=grib_sarray_push(grib_parser_context,(grib_yyvsp[-2].svalue),(grib_yyvsp[0].str));} -#line 2419 "y.tab.c" +#line 2422 "y.tab.c" break; case 15: /* integer_array: INTEGER */ #line 288 "griby.y" { (grib_yyval.ivalue)=grib_iarray_push(0,(grib_yyvsp[0].lval));} -#line 2425 "y.tab.c" +#line 2428 "y.tab.c" break; case 16: /* integer_array: integer_array ',' INTEGER */ #line 289 "griby.y" { (grib_yyval.ivalue)=grib_iarray_push((grib_yyvsp[-2].ivalue),(grib_yyvsp[0].lval));} -#line 2431 "y.tab.c" +#line 2434 "y.tab.c" break; case 18: /* instructions: instruction instructions */ #line 293 "griby.y" { (grib_yyvsp[-1].act)->next = (grib_yyvsp[0].act); (grib_yyval.act) = (grib_yyvsp[-1].act); } -#line 2437 "y.tab.c" +#line 2440 "y.tab.c" break; case 19: /* instructions: instruction ';' instructions */ #line 294 "griby.y" { (grib_yyvsp[-2].act)->next = (grib_yyvsp[0].act); (grib_yyval.act) = (grib_yyvsp[-2].act); } -#line 2443 "y.tab.c" +#line 2446 "y.tab.c" break; case 20: /* instructions: instruction ';' */ #line 295 "griby.y" { (grib_yyval.act) = (grib_yyvsp[-1].act);} -#line 2449 "y.tab.c" +#line 2452 "y.tab.c" break; case 32: /* argument_list: empty */ #line 314 "griby.y" { (grib_yyval.explist) = 0; } -#line 2455 "y.tab.c" +#line 2458 "y.tab.c" break; case 35: /* arguments: argument ',' arguments */ #line 319 "griby.y" { (grib_yyvsp[-2].explist)->next = (grib_yyvsp[0].explist); (grib_yyval.explist) = (grib_yyvsp[-2].explist); } -#line 2461 "y.tab.c" +#line 2464 "y.tab.c" break; case 36: /* argument: expression */ #line 322 "griby.y" { (grib_yyval.explist) = grib_arguments_new(grib_parser_context,(grib_yyvsp[0].exp),NULL); } -#line 2467 "y.tab.c" +#line 2470 "y.tab.c" break; case 37: /* simple: UNSIGNED '[' INTEGER ']' IDENT default flags */ #line 327 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"unsigned",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2473 "y.tab.c" +#line 2476 "y.tab.c" break; case 38: /* simple: UNSIGNED '[' INTEGER ']' IDENT '[' argument_list ']' default flags */ #line 330 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"unsigned",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2479 "y.tab.c" +#line 2482 "y.tab.c" break; case 39: /* simple: UNSIGNED '(' INTEGER ')' IDENT default flags */ #line 333 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"unsigned_bits",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2485 "y.tab.c" +#line 2488 "y.tab.c" break; case 40: /* simple: UNSIGNED '(' INTEGER ')' IDENT '[' argument_list ']' default flags */ #line 336 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"unsigned_bits",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2491 "y.tab.c" +#line 2494 "y.tab.c" break; case 41: /* simple: ASCII '[' INTEGER ']' IDENT default flags */ #line 339 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ascii",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2497 "y.tab.c" +#line 2500 "y.tab.c" break; case 42: /* simple: GROUP IDENT default flags */ #line 342 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"group",0,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2503 "y.tab.c" +#line 2506 "y.tab.c" break; case 43: /* simple: GROUP IDENT '(' argument_list ')' default flags */ #line 345 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"group",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2509 "y.tab.c" +#line 2512 "y.tab.c" break; case 44: /* simple: IDENT '=' TO_INTEGER '(' argument_list ')' flags */ #line 348 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-6].str),"to_integer",0,(grib_yyvsp[-2].explist),0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-6].str)); } -#line 2515 "y.tab.c" +#line 2518 "y.tab.c" break; case 45: /* simple: IDENT '=' SEX2DEC '(' argument_list ')' flags */ #line 351 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-6].str),"sexagesimal2decimal",0,(grib_yyvsp[-2].explist),0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-6].str)); } -#line 2521 "y.tab.c" +#line 2524 "y.tab.c" break; case 46: /* simple: IDENT '=' TO_STRING '(' argument_list ')' flags */ #line 354 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-6].str),"to_string",0,(grib_yyvsp[-2].explist),0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-6].str)); } -#line 2527 "y.tab.c" +#line 2530 "y.tab.c" break; case 47: /* simple: NON_ALPHA IDENT default flags */ #line 357 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"non_alpha",0,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2533 "y.tab.c" +#line 2536 "y.tab.c" break; case 48: /* simple: ASCII '[' INTEGER ']' STRING default flags */ #line 361 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ascii",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2539 "y.tab.c" +#line 2542 "y.tab.c" break; case 49: /* simple: BYTE '[' INTEGER ']' IDENT default flags */ #line 364 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"bytes",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2545 "y.tab.c" +#line 2548 "y.tab.c" break; case 50: /* simple: BYTE '[' INTEGER ']' IDENT '[' argument_list ']' default flags */ #line 367 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"bytes",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2551 "y.tab.c" +#line 2554 "y.tab.c" break; case 51: /* simple: KSEC1EXPVER '[' INTEGER ']' IDENT default flags */ #line 370 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ksec1expver",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2557 "y.tab.c" +#line 2560 "y.tab.c" break; case 52: /* simple: SIGNED '[' INTEGER ']' IDENT default flags */ #line 373 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"signed",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2563 "y.tab.c" +#line 2566 "y.tab.c" break; case 53: /* simple: SIGNED '[' INTEGER ']' IDENT '[' argument_list ']' default flags */ #line 376 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"signed",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2569 "y.tab.c" +#line 2572 "y.tab.c" break; case 54: /* simple: SIGNED '(' INTEGER ')' IDENT default flags */ #line 379 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"signed_bits",(grib_yyvsp[-4].lval),NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2575 "y.tab.c" +#line 2578 "y.tab.c" break; case 55: /* simple: SIGNED '(' INTEGER ')' IDENT '[' argument_list ']' default flags */ #line 382 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"signed_bits",(grib_yyvsp[-7].lval),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2581 "y.tab.c" +#line 2584 "y.tab.c" break; case 56: /* simple: CODETABLE '[' INTEGER ']' IDENT argument default flags */ #line 385 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"codetable",(grib_yyvsp[-5].lval), (grib_yyvsp[-2].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2587 "y.tab.c" +#line 2590 "y.tab.c" break; case 57: /* simple: CODETABLE '[' IDENT ']' IDENT argument default flags */ @@ -2597,326 +2600,326 @@ grib_yyreduce: (grib_yyvsp[-1].explist), (grib_yyvsp[0].lval), NULL, NULL); free((grib_yyvsp[-3].str)); } -#line 2601 "y.tab.c" +#line 2604 "y.tab.c" break; case 58: /* simple: CODETABLE '[' INTEGER ']' IDENT argument default SET '(' IDENT ')' flags */ #line 399 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-7].str),"codetable",(grib_yyvsp[-9].lval), (grib_yyvsp[-6].explist),(grib_yyvsp[-5].explist),(grib_yyvsp[0].lval),NULL,(grib_yyvsp[-2].str)); free((grib_yyvsp[-7].str));free((grib_yyvsp[-2].str)); } -#line 2608 "y.tab.c" +#line 2611 "y.tab.c" break; case 59: /* simple: CODETABLE '[' INTEGER ']' IDENT '(' argument_list ')' default flags */ #line 403 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"codetable",(grib_yyvsp[-7].lval), (grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2614 "y.tab.c" +#line 2617 "y.tab.c" break; case 60: /* simple: SMART_TABLE IDENT '(' argument_list ')' default flags */ #line 406 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"smart_table",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2620 "y.tab.c" +#line 2623 "y.tab.c" break; case 61: /* simple: IDENT '=' DICTIONARY '(' argument_list ')' default flags */ #line 409 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-7].str),"dictionary",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-7].str)); } -#line 2626 "y.tab.c" +#line 2629 "y.tab.c" break; case 62: /* simple: IDENT '=' GETENV '(' argument_list ')' default flags */ #line 412 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-7].str),"getenv",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-7].str)); } -#line 2632 "y.tab.c" +#line 2635 "y.tab.c" break; case 63: /* simple: COMPLEX_CODETABLE '[' INTEGER ']' IDENT argument default flags */ #line 415 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"complex_codetable",(grib_yyvsp[-5].lval), (grib_yyvsp[-2].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2638 "y.tab.c" +#line 2641 "y.tab.c" break; case 64: /* simple: COMPLEX_CODETABLE '[' INTEGER ']' IDENT '(' argument_list ')' default flags */ #line 418 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"complex_codetable",(grib_yyvsp[-7].lval), (grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2644 "y.tab.c" +#line 2647 "y.tab.c" break; case 65: /* simple: FLAG '[' INTEGER ']' IDENT argument default flags */ #line 421 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"codeflag",(grib_yyvsp[-5].lval), (grib_yyvsp[-2].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2650 "y.tab.c" +#line 2653 "y.tab.c" break; case 66: /* simple: LOOKUP '[' INTEGER ']' IDENT '(' argument_list ')' flags */ #line 424 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-4].str),"lookup",(grib_yyvsp[-6].lval),(grib_yyvsp[-2].explist),NULL,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-4].str)); } -#line 2656 "y.tab.c" +#line 2659 "y.tab.c" break; case 67: /* simple: FLAGBIT IDENT '(' argument_list ')' default flags */ #line 427 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"bit",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2662 "y.tab.c" +#line 2665 "y.tab.c" break; case 68: /* simple: LABEL IDENT */ #line 430 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[0].str)); } -#line 2668 "y.tab.c" +#line 2671 "y.tab.c" break; case 69: /* simple: LABEL STRING */ #line 433 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[0].str)); } -#line 2674 "y.tab.c" +#line 2677 "y.tab.c" break; case 70: /* simple: IBMFLOAT IDENT default flags */ #line 436 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ibmfloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2680 "y.tab.c" +#line 2683 "y.tab.c" break; case 71: /* simple: INT8 IDENT default flags */ #line 440 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int8",1,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2686 "y.tab.c" +#line 2689 "y.tab.c" break; case 72: /* simple: UINT8 IDENT default flags */ #line 443 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint8",1,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2692 "y.tab.c" +#line 2695 "y.tab.c" break; case 73: /* simple: INT16 IDENT default flags */ #line 446 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int16",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2698 "y.tab.c" +#line 2701 "y.tab.c" break; case 74: /* simple: UINT16 IDENT default flags */ #line 449 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint16",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2704 "y.tab.c" +#line 2707 "y.tab.c" break; case 75: /* simple: INT16_LITTLE_ENDIAN IDENT default flags */ #line 452 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int16_little_endian",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2710 "y.tab.c" +#line 2713 "y.tab.c" break; case 76: /* simple: UINT16_LITTLE_ENDIAN IDENT default flags */ #line 455 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint16_little_endian",2,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2716 "y.tab.c" +#line 2719 "y.tab.c" break; case 77: /* simple: INT32 IDENT default flags */ #line 458 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int32",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2722 "y.tab.c" +#line 2725 "y.tab.c" break; case 78: /* simple: UINT32 IDENT default flags */ #line 461 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint32",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2728 "y.tab.c" +#line 2731 "y.tab.c" break; case 79: /* simple: INT32_LITTLE_ENDIAN IDENT default flags */ #line 464 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int32_little_endian",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2734 "y.tab.c" +#line 2737 "y.tab.c" break; case 80: /* simple: UINT32_LITTLE_ENDIAN IDENT default flags */ #line 467 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint32_little_endian",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2740 "y.tab.c" +#line 2743 "y.tab.c" break; case 81: /* simple: INT64 IDENT default flags */ #line 470 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int64",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2746 "y.tab.c" +#line 2749 "y.tab.c" break; case 82: /* simple: UINT64 IDENT default flags */ #line 473 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint64",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2752 "y.tab.c" +#line 2755 "y.tab.c" break; case 83: /* simple: INT64_LITTLE_ENDIAN IDENT default flags */ #line 476 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"int64_little_endian",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2758 "y.tab.c" +#line 2761 "y.tab.c" break; case 84: /* simple: UINT64_LITTLE_ENDIAN IDENT default flags */ #line 479 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"uint64_little_endian",8,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-2].str)); } -#line 2764 "y.tab.c" +#line 2767 "y.tab.c" break; case 85: /* simple: BLOB IDENT '[' argument_list ']' default flags */ #line 482 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"blob",0,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-5].str)); } -#line 2770 "y.tab.c" +#line 2773 "y.tab.c" break; case 86: /* simple: IBMFLOAT IDENT '.' IDENT default flags */ #line 486 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ibmfloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),(grib_yyvsp[-4].str),NULL);free((grib_yyvsp[-2].str)); free((grib_yyvsp[-4].str)); } -#line 2776 "y.tab.c" +#line 2779 "y.tab.c" break; case 87: /* simple: IBMFLOAT IDENT '[' argument ']' default flags */ #line 489 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"ibmfloat",4,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-5].str)); } -#line 2782 "y.tab.c" +#line 2785 "y.tab.c" break; case 88: /* simple: POS IDENT */ #line 492 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"position",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[0].str)); } -#line 2788 "y.tab.c" +#line 2791 "y.tab.c" break; case 89: /* simple: INTCONST IDENT '=' argument flags */ #line 495 "griby.y" { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[-3].str),"constant",0,(grib_yyvsp[-1].explist),NULL,(grib_yyvsp[0].lval),NULL);free((grib_yyvsp[-3].str)); } -#line 2794 "y.tab.c" +#line 2797 "y.tab.c" break; case 90: /* simple: TRANS IDENT '=' argument flags */ #line 498 "griby.y" { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[-3].str),"transient",0,(grib_yyvsp[-1].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL); free((grib_yyvsp[-3].str)); } -#line 2800 "y.tab.c" +#line 2803 "y.tab.c" break; case 91: /* simple: TRANS IDENT '=' '{' dvalues '}' flags */ #line 500 "griby.y" { (grib_yyval.act) = grib_action_create_transient_darray(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-2].dvalue),(grib_yyvsp[0].lval)); free((grib_yyvsp[-5].str)); } -#line 2806 "y.tab.c" +#line 2809 "y.tab.c" break; case 92: /* simple: FLOAT IDENT default flags */ #line 503 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ieeefloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-2].str)); } -#line 2812 "y.tab.c" +#line 2815 "y.tab.c" break; case 93: /* simple: FLOAT IDENT '.' IDENT default flags */ #line 506 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-2].str),"ieeefloat",4,NULL,(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),(grib_yyvsp[-4].str),NULL); free((grib_yyvsp[-2].str));free((grib_yyvsp[-4].str));} -#line 2818 "y.tab.c" +#line 2821 "y.tab.c" break; case 94: /* simple: FLOAT IDENT '[' argument ']' default flags */ #line 509 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-5].str),"ieeefloat",4,(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL,NULL);free((grib_yyvsp[-5].str)); } -#line 2824 "y.tab.c" +#line 2827 "y.tab.c" break; case 95: /* simple: G1_HALF_BYTE IDENT */ #line 512 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[0].str),"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free((grib_yyvsp[0].str)); } -#line 2830 "y.tab.c" +#line 2833 "y.tab.c" break; case 96: /* simple: SECTION_LENGTH '[' INTEGER ']' IDENT default */ #line 515 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"section_length",(grib_yyvsp[-3].lval),NULL,(grib_yyvsp[0].explist),0,NULL,NULL);free((grib_yyvsp[-1].str)); } -#line 2836 "y.tab.c" +#line 2839 "y.tab.c" break; case 97: /* simple: G1_MESSAGE_LENGTH '[' INTEGER ']' IDENT '(' argument_list ')' */ #line 518 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"g1_message_length",(grib_yyvsp[-5].lval),(grib_yyvsp[-1].explist),NULL,0,NULL,NULL);free((grib_yyvsp[-3].str)); } -#line 2842 "y.tab.c" +#line 2845 "y.tab.c" break; case 98: /* simple: G1_SECTION4_LENGTH '[' INTEGER ']' IDENT '(' argument_list ')' */ #line 521 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"g1_section4_length",(grib_yyvsp[-5].lval),(grib_yyvsp[-1].explist),NULL,0,NULL,NULL);free((grib_yyvsp[-3].str)); } -#line 2848 "y.tab.c" +#line 2851 "y.tab.c" break; case 99: /* simple: KSEC IDENT argument */ #line 524 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"ksec",0,(grib_yyvsp[0].explist),NULL,0,NULL,NULL);free((grib_yyvsp[-1].str)); } -#line 2854 "y.tab.c" +#line 2857 "y.tab.c" break; case 100: /* simple: PAD IDENT '(' argument_list ')' */ #line 527 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"pad",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2860 "y.tab.c" +#line 2863 "y.tab.c" break; case 101: /* simple: PADTO IDENT '(' argument_list ')' */ #line 530 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"padto",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2866 "y.tab.c" +#line 2869 "y.tab.c" break; case 102: /* simple: PADTOEVEN IDENT '(' argument_list ')' */ #line 533 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"padtoeven",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2872 "y.tab.c" +#line 2875 "y.tab.c" break; case 103: /* simple: PADTOMULTIPLE IDENT '(' argument_list ')' */ #line 536 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-3].str),"padtomultiple",0,(grib_yyvsp[-1].explist),0,0,NULL,NULL); free((grib_yyvsp[-3].str)); } -#line 2878 "y.tab.c" +#line 2881 "y.tab.c" break; case 104: /* simple: MESSAGE '[' INTEGER ']' IDENT flags */ #line 539 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"message",(grib_yyvsp[-3].lval),0,0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-1].str)); } -#line 2884 "y.tab.c" +#line 2887 "y.tab.c" break; case 105: /* simple: MESSAGE_COPY IDENT flags */ #line 542 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"message_copy",0,0,0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-1].str)); } -#line 2890 "y.tab.c" +#line 2893 "y.tab.c" break; case 106: /* simple: SECTION_PADDING IDENT flags */ #line 545 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[-1].str),"section_padding",0,0,0,(grib_yyvsp[0].lval),NULL,NULL); free((grib_yyvsp[-1].str)); } -#line 2896 "y.tab.c" +#line 2899 "y.tab.c" break; case 107: /* simple: TEMPLATE IDENT STRING */ #line 547 "griby.y" { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[-1].str),(grib_yyvsp[0].str)); free((grib_yyvsp[-1].str)); free((grib_yyvsp[0].str));} -#line 2902 "y.tab.c" +#line 2905 "y.tab.c" break; case 108: /* simple: TEMPLATE_NOFAIL IDENT STRING */ #line 549 "griby.y" { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[-1].str),(grib_yyvsp[0].str)); free((grib_yyvsp[-1].str)); free((grib_yyvsp[0].str));} -#line 2908 "y.tab.c" +#line 2911 "y.tab.c" break; case 109: /* simple: ALIAS IDENT '=' IDENT flags */ #line 552 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str),NULL,(grib_yyvsp[0].lval)); free((grib_yyvsp[-3].str)); free((grib_yyvsp[-1].str)); } -#line 2914 "y.tab.c" +#line 2917 "y.tab.c" break; case 110: /* simple: UNALIAS IDENT */ #line 555 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[0].str),NULL,NULL,0); free((grib_yyvsp[0].str)); } -#line 2920 "y.tab.c" +#line 2923 "y.tab.c" break; case 111: /* simple: ALIAS IDENT '.' IDENT '=' IDENT flags */ @@ -2924,7 +2927,7 @@ grib_yyreduce: { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str),(grib_yyvsp[-5].str),(grib_yyvsp[0].lval)); free((grib_yyvsp[-5].str)); free((grib_yyvsp[-3].str)); free((grib_yyvsp[-1].str)); } -#line 2928 "y.tab.c" +#line 2931 "y.tab.c" break; case 112: /* simple: UNALIAS IDENT '.' IDENT */ @@ -2932,19 +2935,19 @@ grib_yyreduce: { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[0].str),NULL,(grib_yyvsp[-2].str),0); free((grib_yyvsp[-2].str)); free((grib_yyvsp[0].str)); } -#line 2936 "y.tab.c" +#line 2939 "y.tab.c" break; case 113: /* simple: META IDENT IDENT '(' argument_list ')' default flags */ #line 566 "griby.y" { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[-6].str),(grib_yyvsp[-5].str),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),NULL); free((grib_yyvsp[-6].str));free((grib_yyvsp[-5].str));} -#line 2942 "y.tab.c" +#line 2945 "y.tab.c" break; case 114: /* simple: META IDENT '.' IDENT IDENT '(' argument_list ')' default flags */ #line 569 "griby.y" { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[-6].str),(grib_yyvsp[-5].str),(grib_yyvsp[-3].explist),(grib_yyvsp[-1].explist),(grib_yyvsp[0].lval),(grib_yyvsp[-8].str)); free((grib_yyvsp[-6].str));free((grib_yyvsp[-5].str));free((grib_yyvsp[-8].str));} -#line 2948 "y.tab.c" +#line 2951 "y.tab.c" break; case 115: /* simple: ITERATOR IDENT '(' argument_list ')' */ @@ -2960,7 +2963,7 @@ grib_yyreduce: "ITERATOR","iterator",a,NULL, GRIB_ACCESSOR_FLAG_HIDDEN|GRIB_ACCESSOR_FLAG_READ_ONLY,NULL); free((grib_yyvsp[-3].str)); } -#line 2964 "y.tab.c" +#line 2967 "y.tab.c" break; case 116: /* simple: NEAREST IDENT '(' argument_list ')' */ @@ -2976,7 +2979,7 @@ grib_yyreduce: "NEAREST","nearest",a,NULL, GRIB_ACCESSOR_FLAG_HIDDEN|GRIB_ACCESSOR_FLAG_READ_ONLY,NULL); free((grib_yyvsp[-3].str)); } -#line 2980 "y.tab.c" +#line 2983 "y.tab.c" break; case 117: /* simple: BOX IDENT '(' argument_list ')' */ @@ -2992,821 +2995,827 @@ grib_yyreduce: "BOX","box",a,NULL, GRIB_ACCESSOR_FLAG_HIDDEN|GRIB_ACCESSOR_FLAG_READ_ONLY,NULL); free((grib_yyvsp[-3].str)); } -#line 2996 "y.tab.c" +#line 2999 "y.tab.c" break; case 118: /* simple: EXPORT IDENT '(' argument_list ')' */ #line 608 "griby.y" { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].explist));free((grib_yyvsp[-3].str));} -#line 3002 "y.tab.c" +#line 3005 "y.tab.c" break; case 119: /* simple: REMOVE argument_list */ #line 611 "griby.y" { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[0].explist));} -#line 3008 "y.tab.c" +#line 3011 "y.tab.c" break; case 120: /* simple: RENAME '(' IDENT ',' IDENT ')' */ #line 613 "griby.y" { (grib_yyval.act) = grib_action_create_rename(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str));free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} -#line 3014 "y.tab.c" +#line 3017 "y.tab.c" break; case 121: /* simple: ASSERT '(' expression ')' */ #line 616 "griby.y" { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[-1].exp));} -#line 3020 "y.tab.c" +#line 3023 "y.tab.c" break; case 122: /* simple: MODIFY IDENT flags */ #line 619 "griby.y" { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[-1].str),(grib_yyvsp[0].lval)); free((grib_yyvsp[-1].str));} -#line 3026 "y.tab.c" +#line 3029 "y.tab.c" break; case 123: /* simple: SET IDENT '=' MISSING */ #line 621 "griby.y" { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[-2].str)); free((grib_yyvsp[-2].str)); } -#line 3032 "y.tab.c" +#line 3035 "y.tab.c" break; case 124: /* simple: SET IDENT '=' expression */ #line 622 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),0); free((grib_yyvsp[-2].str)); } -#line 3038 "y.tab.c" +#line 3041 "y.tab.c" break; case 125: /* simple: SET IDENT '=' '{' dvalues '}' */ #line 623 "griby.y" { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].dvalue)); free((grib_yyvsp[-4].str)); } -#line 3044 "y.tab.c" +#line 3047 "y.tab.c" break; case 126: /* simple: SET IDENT '=' '{' svalues '}' */ #line 624 "griby.y" { (grib_yyval.act) = grib_action_create_set_sarray(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].svalue)); free((grib_yyvsp[-4].str)); } -#line 3050 "y.tab.c" +#line 3053 "y.tab.c" break; case 127: /* simple: SET_NOFAIL IDENT '=' expression */ #line 626 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),1); free((grib_yyvsp[-2].str)); } -#line 3056 "y.tab.c" +#line 3059 "y.tab.c" break; case 128: /* simple: WRITE STRING */ #line 629 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),0,0); free((grib_yyvsp[0].str));} -#line 3062 "y.tab.c" +#line 3065 "y.tab.c" break; case 129: /* simple: WRITE */ #line 630 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); } -#line 3068 "y.tab.c" +#line 3071 "y.tab.c" break; case 130: /* simple: WRITE '(' INTEGER ')' STRING */ #line 631 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),0,(grib_yyvsp[-2].lval)); free((grib_yyvsp[0].str));} -#line 3074 "y.tab.c" +#line 3077 "y.tab.c" break; case 131: /* simple: WRITE '(' INTEGER ')' */ #line 632 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[-1].lval)); } -#line 3080 "y.tab.c" +#line 3083 "y.tab.c" break; case 132: /* simple: APPEND STRING */ #line 633 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),1,0); free((grib_yyvsp[0].str));} -#line 3086 "y.tab.c" +#line 3089 "y.tab.c" break; case 133: /* simple: APPEND */ #line 634 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); } -#line 3092 "y.tab.c" +#line 3095 "y.tab.c" break; case 134: /* simple: APPEND '(' INTEGER ')' STRING */ #line 635 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[0].str),1,(grib_yyvsp[-2].lval)); free((grib_yyvsp[0].str));} -#line 3098 "y.tab.c" +#line 3101 "y.tab.c" break; case 135: /* simple: APPEND '(' INTEGER ')' */ #line 636 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[-1].lval)); } -#line 3104 "y.tab.c" +#line 3107 "y.tab.c" break; case 136: /* simple: CLOSE '(' IDENT ')' */ #line 638 "griby.y" { (grib_yyval.act) = grib_action_create_close(grib_parser_context,(grib_yyvsp[-1].str)); free((grib_yyvsp[-1].str));} -#line 3110 "y.tab.c" +#line 3113 "y.tab.c" break; case 137: /* simple: PRINT STRING */ #line 639 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[0].str),0); free((grib_yyvsp[0].str)); } -#line 3116 "y.tab.c" +#line 3119 "y.tab.c" break; case 138: /* simple: PRINT '(' STRING ')' STRING */ #line 640 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[0].str),(grib_yyvsp[-2].str)); free((grib_yyvsp[0].str)); free((grib_yyvsp[-2].str));} -#line 3122 "y.tab.c" +#line 3125 "y.tab.c" break; case 139: /* simple: PRINT '(' IDENT ')' STRING */ #line 641 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[0].str),(grib_yyvsp[-2].str)); free((grib_yyvsp[0].str)); free((grib_yyvsp[-2].str));} -#line 3128 "y.tab.c" +#line 3131 "y.tab.c" break; case 140: /* simple: PRINT */ #line 642 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0); } -#line 3134 "y.tab.c" +#line 3137 "y.tab.c" break; case 141: /* if_block: IF '(' expression ')' '{' instructions '}' */ #line 646 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act),0,0,grib_yylineno,file_being_parsed()); } -#line 3140 "y.tab.c" +#line 3143 "y.tab.c" break; case 142: /* if_block: IF '(' expression ')' '{' instructions '}' ELSE '{' instructions '}' */ #line 647 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-8].exp),(grib_yyvsp[-5].act),(grib_yyvsp[-1].act),0,grib_yylineno,file_being_parsed()); } -#line 3146 "y.tab.c" +#line 3149 "y.tab.c" break; case 143: /* if_block: IF_TRANSIENT '(' expression ')' '{' instructions '}' */ #line 648 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act),0,1,grib_yylineno,file_being_parsed()); } -#line 3152 "y.tab.c" +#line 3155 "y.tab.c" break; case 144: /* if_block: IF_TRANSIENT '(' expression ')' '{' instructions '}' ELSE '{' instructions '}' */ #line 649 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[-8].exp),(grib_yyvsp[-5].act),(grib_yyvsp[-1].act),1,grib_yylineno,file_being_parsed()); } -#line 3158 "y.tab.c" +#line 3161 "y.tab.c" break; case 145: /* when_block: WHEN '(' expression ')' set semi */ #line 653 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[-3].exp),(grib_yyvsp[-1].act),NULL); } -#line 3164 "y.tab.c" +#line 3167 "y.tab.c" break; case 146: /* when_block: WHEN '(' expression ')' '{' set_list '}' */ #line 654 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act),NULL); } -#line 3170 "y.tab.c" +#line 3173 "y.tab.c" break; case 147: /* when_block: WHEN '(' expression ')' '{' set_list '}' ELSE '{' set_list '}' */ #line 655 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[-8].exp),(grib_yyvsp[-5].act),(grib_yyvsp[-1].act)); } -#line 3176 "y.tab.c" +#line 3179 "y.tab.c" break; case 148: /* set: SET IDENT '=' expression */ #line 658 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),0); free((grib_yyvsp[-2].str)); } -#line 3182 "y.tab.c" +#line 3185 "y.tab.c" break; case 149: /* set: SET_NOFAIL IDENT '=' expression */ #line 659 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[-2].str),(grib_yyvsp[0].exp),1); free((grib_yyvsp[-2].str)); } -#line 3188 "y.tab.c" +#line 3191 "y.tab.c" break; case 151: /* set_list: set_list set semi */ #line 663 "griby.y" { (grib_yyvsp[-2].act)->next = (grib_yyvsp[-1].act); (grib_yyval.act) = (grib_yyvsp[-2].act); } -#line 3194 "y.tab.c" +#line 3197 "y.tab.c" break; case 152: /* default: empty */ #line 667 "griby.y" { (grib_yyval.explist) = NULL ;} -#line 3200 "y.tab.c" +#line 3203 "y.tab.c" break; case 153: /* default: '=' argument_list */ #line 668 "griby.y" { (grib_yyval.explist) = (grib_yyvsp[0].explist) ;} -#line 3206 "y.tab.c" +#line 3209 "y.tab.c" break; case 154: /* flags: empty */ #line 671 "griby.y" { (grib_yyval.lval) = 0 ; } -#line 3212 "y.tab.c" +#line 3215 "y.tab.c" break; case 155: /* flags: ':' flag_list */ #line 672 "griby.y" { (grib_yyval.lval) = (grib_yyvsp[0].lval); } -#line 3218 "y.tab.c" +#line 3221 "y.tab.c" break; case 157: /* flag_list: flag_list ',' flag */ #line 676 "griby.y" { (grib_yyval.lval) = (grib_yyvsp[-2].lval) | (grib_yyvsp[0].lval); } -#line 3224 "y.tab.c" +#line 3227 "y.tab.c" break; case 158: /* flag: READ_ONLY */ #line 679 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; } -#line 3230 "y.tab.c" +#line 3233 "y.tab.c" break; case 159: /* flag: LOWERCASE */ #line 680 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; } -#line 3236 "y.tab.c" +#line 3239 "y.tab.c" break; case 160: /* flag: DUMP */ #line 681 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; } -#line 3242 "y.tab.c" +#line 3245 "y.tab.c" break; case 161: /* flag: NO_COPY */ #line 682 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; } -#line 3248 "y.tab.c" +#line 3251 "y.tab.c" break; case 162: /* flag: NO_FAIL */ #line 683 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; } -#line 3254 "y.tab.c" +#line 3257 "y.tab.c" break; case 163: /* flag: HIDDEN */ #line 684 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; } -#line 3260 "y.tab.c" +#line 3263 "y.tab.c" break; case 164: /* flag: EDITION_SPECIFIC */ #line 685 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } -#line 3266 "y.tab.c" +#line 3269 "y.tab.c" break; case 165: /* flag: CAN_BE_MISSING */ #line 686 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; } -#line 3272 "y.tab.c" +#line 3275 "y.tab.c" break; case 166: /* flag: CONSTRAINT */ #line 687 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; } -#line 3278 "y.tab.c" +#line 3281 "y.tab.c" break; case 167: /* flag: COPY_OK */ #line 688 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; } -#line 3284 "y.tab.c" +#line 3287 "y.tab.c" break; case 168: /* flag: TRANS */ #line 689 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; } -#line 3290 "y.tab.c" +#line 3293 "y.tab.c" break; case 169: /* flag: STRING_TYPE */ #line 690 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; } -#line 3296 "y.tab.c" +#line 3299 "y.tab.c" break; case 170: /* flag: LONG_TYPE */ #line 691 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; } -#line 3302 "y.tab.c" +#line 3305 "y.tab.c" break; case 171: /* flag: DOUBLE_TYPE */ #line 692 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; } -#line 3308 "y.tab.c" +#line 3311 "y.tab.c" break; case 172: /* list_block: IDENT LIST '(' expression ')' '{' instructions '}' */ #line 695 "griby.y" { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act)); free((grib_yyvsp[-7].str)); } -#line 3314 "y.tab.c" +#line 3317 "y.tab.c" break; case 173: /* while_block: WHILE '(' expression ')' '{' instructions '}' */ #line 698 "griby.y" { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].act)); } -#line 3320 "y.tab.c" +#line 3323 "y.tab.c" break; case 174: /* trigger_block: TRIGGER '(' argument_list ')' '{' instructions '}' */ #line 701 "griby.y" { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[-4].explist),(grib_yyvsp[-1].act)); } -#line 3326 "y.tab.c" +#line 3329 "y.tab.c" break; case 175: /* concept_block: CONCEPT IDENT '{' concept_list '}' flags */ #line 704 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-4].str)); } -#line 3332 "y.tab.c" +#line 3335 "y.tab.c" break; case 176: /* concept_block: CONCEPT IDENT '(' IDENT ')' '{' concept_list '}' flags */ #line 705 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,0,(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3338 "y.tab.c" +#line 3341 "y.tab.c" break; case 177: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ #line 706 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3344 "y.tab.c" +#line 3347 "y.tab.c" break; case 178: /* concept_block: CONCEPT IDENT '(' IDENT ',' IDENT ',' IDENT ',' IDENT ')' flags */ #line 707 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3350 "y.tab.c" +#line 3353 "y.tab.c" break; case 179: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ',' IDENT ')' flags */ #line 708 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-12].str),0,(grib_yyvsp[-8].str),0,(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),(grib_yyvsp[0].lval),0); free((grib_yyvsp[-12].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3356 "y.tab.c" +#line 3359 "y.tab.c" break; case 180: /* concept_block: CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 709 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); } -#line 3362 "y.tab.c" +#line 3365 "y.tab.c" break; case 181: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ -#line 710 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str)); free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} -#line 3368 "y.tab.c" - break; - - case 182: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 711 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} -#line 3374 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str)); free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} +#line 3371 "y.tab.c" break; - case 183: /* concept_block: CONCEPT IDENT '.' IDENT '{' concept_list '}' flags */ + case 182: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' IDENT ',' IDENT ',' IDENT ')' flags */ #line 712 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } -#line 3380 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str)); free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} +#line 3377 "y.tab.c" break; - case 184: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ + case 183: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 713 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-9].str),(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-9].str));free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3386 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} +#line 3383 "y.tab.c" break; - case 185: /* concept_block: CONCEPT_NOFAIL IDENT '{' concept_list '}' flags */ + case 184: /* concept_block: CONCEPT IDENT '.' IDENT '{' concept_list '}' flags */ #line 714 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-4].str)); } -#line 3392 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } +#line 3389 "y.tab.c" break; - case 186: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ')' '{' concept_list '}' flags */ + case 185: /* concept_block: CONCEPT IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ #line 715 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,0,(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3398 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-9].str),(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-9].str));free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } +#line 3395 "y.tab.c" break; - case 187: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ -#line 716 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3404 "y.tab.c" - break; - - case 188: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ + case 186: /* concept_block: CONCEPT_NOFAIL IDENT '{' concept_list '}' flags */ #line 717 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); } -#line 3410 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-4].str)); } +#line 3401 "y.tab.c" break; - case 189: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ + case 187: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ')' '{' concept_list '}' flags */ #line 718 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} -#line 3416 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,0,(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } +#line 3407 "y.tab.c" break; - case 190: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ + case 188: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ #line 719 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} -#line 3422 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } +#line 3413 "y.tab.c" break; - case 191: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '{' concept_list '}' flags */ + case 189: /* concept_block: CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ #line 720 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } -#line 3428 "y.tab.c" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); } +#line 3419 "y.tab.c" break; - case 192: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ + case 190: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ #line 721 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),(grib_yyvsp[-12].str),(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-12].str));} +#line 3425 "y.tab.c" + break; + + case 191: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags */ +#line 722 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-8].str),0,(grib_yyvsp[-4].str),(grib_yyvsp[-10].str),(grib_yyvsp[-6].str),(grib_yyvsp[-2].str),0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-2].str)); free((grib_yyvsp[-10].str));} +#line 3431 "y.tab.c" + break; + + case 192: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '{' concept_list '}' flags */ +#line 723 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-6].str),0,0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-6].str));free((grib_yyvsp[-4].str)); } +#line 3437 "y.tab.c" + break; + + case 193: /* concept_block: CONCEPT_NOFAIL IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags */ +#line 724 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[-7].str),(grib_yyvsp[-2].concept_value),0,(grib_yyvsp[-9].str),(grib_yyvsp[-5].str),0,0,0,(grib_yyvsp[0].lval),1); free((grib_yyvsp[-9].str));free((grib_yyvsp[-7].str));free((grib_yyvsp[-5].str)); } -#line 3434 "y.tab.c" +#line 3443 "y.tab.c" break; - case 194: /* concept_list: concept_list concept_value */ -#line 726 "griby.y" + case 195: /* concept_list: concept_list concept_value */ +#line 729 "griby.y" { (grib_yyval.concept_value) = (grib_yyvsp[0].concept_value); (grib_yyvsp[0].concept_value)->next = (grib_yyvsp[-1].concept_value); } -#line 3440 "y.tab.c" +#line 3449 "y.tab.c" break; - case 196: /* hash_array_list: hash_array_list hash_array_value */ -#line 730 "griby.y" - { (grib_yyval.hash_array_value) = (grib_yyvsp[0].hash_array_value); (grib_yyvsp[0].hash_array_value)->next = (grib_yyvsp[-1].hash_array_value); } -#line 3446 "y.tab.c" - break; - - case 197: /* hash_array_block: HASH_ARRAY IDENT '{' hash_array_list '}' flags */ + case 197: /* hash_array_list: hash_array_list hash_array_value */ #line 733 "griby.y" + { (grib_yyval.hash_array_value) = (grib_yyvsp[0].hash_array_value); (grib_yyvsp[0].hash_array_value)->next = (grib_yyvsp[-1].hash_array_value); } +#line 3455 "y.tab.c" + break; + + case 198: /* hash_array_block: HASH_ARRAY IDENT '{' hash_array_list '}' flags */ +#line 736 "griby.y" { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-2].hash_array_value),0,0,0,0,0,0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-4].str)); } -#line 3452 "y.tab.c" +#line 3461 "y.tab.c" break; - case 198: /* hash_array_block: HASH_ARRAY IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ -#line 734 "griby.y" + case 199: /* hash_array_block: HASH_ARRAY IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags */ +#line 737 "griby.y" { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[-10].str),0,(grib_yyvsp[-6].str),0,(grib_yyvsp[-8].str),(grib_yyvsp[-4].str),(grib_yyvsp[-2].str),0,(grib_yyvsp[0].lval),0); free((grib_yyvsp[-10].str));free((grib_yyvsp[-6].str));free((grib_yyvsp[-8].str));free((grib_yyvsp[-4].str));free((grib_yyvsp[-2].str)); } -#line 3458 "y.tab.c" +#line 3467 "y.tab.c" break; - case 200: /* case_list: case_list case_value */ -#line 738 "griby.y" - { (grib_yyval.case_value) = (grib_yyvsp[0].case_value); (grib_yyvsp[0].case_value)->next = (grib_yyvsp[-1].case_value); } -#line 3464 "y.tab.c" - break; - - case 201: /* case_value: CASE arguments ':' instructions */ + case 201: /* case_list: case_list case_value */ #line 741 "griby.y" + { (grib_yyval.case_value) = (grib_yyvsp[0].case_value); (grib_yyvsp[0].case_value)->next = (grib_yyvsp[-1].case_value); } +#line 3473 "y.tab.c" + break; + + case 202: /* case_value: CASE arguments ':' instructions */ +#line 744 "griby.y" { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[-2].explist),(grib_yyvsp[0].act)); } -#line 3470 "y.tab.c" +#line 3479 "y.tab.c" break; - case 202: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' instructions '}' */ -#line 745 "griby.y" + case 203: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' instructions '}' */ +#line 748 "griby.y" { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-7].explist),(grib_yyvsp[-4].case_value),(grib_yyvsp[-1].act)); } -#line 3476 "y.tab.c" +#line 3485 "y.tab.c" break; - case 203: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' '}' */ -#line 746 "griby.y" + case 204: /* switch_block: SWITCH '(' argument_list ')' '{' case_list DEFAULT ':' '}' */ +#line 749 "griby.y" { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-6].explist),(grib_yyvsp[-3].case_value),grib_action_create_noop(grib_parser_context,"continue")); } -#line 3482 "y.tab.c" +#line 3491 "y.tab.c" break; - case 204: /* switch_block: SWITCH '(' argument_list ')' '{' case_list '}' */ -#line 747 "griby.y" - { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-4].explist),(grib_yyvsp[-1].case_value),0); } -#line 3488 "y.tab.c" - break; - - case 205: /* concept_value: STRING '=' '{' concept_conditions '}' */ + case 205: /* switch_block: SWITCH '(' argument_list ')' '{' case_list '}' */ #line 750 "griby.y" + { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[-4].explist),(grib_yyvsp[-1].case_value),0); } +#line 3497 "y.tab.c" + break; + + case 206: /* concept_value: STRING '=' '{' concept_conditions '}' */ +#line 753 "griby.y" { (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].concept_condition)); free((grib_yyvsp[-4].str));} -#line 3495 "y.tab.c" +#line 3504 "y.tab.c" break; - case 206: /* concept_value: IDENT '=' '{' concept_conditions '}' */ -#line 752 "griby.y" + case 207: /* concept_value: IDENT '=' '{' concept_conditions '}' */ +#line 755 "griby.y" { (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].concept_condition)); free((grib_yyvsp[-4].str));} -#line 3502 "y.tab.c" +#line 3511 "y.tab.c" break; - case 207: /* concept_value: INTEGER '=' '{' concept_conditions '}' */ -#line 754 "griby.y" + case 208: /* concept_value: INTEGER '=' '{' concept_conditions '}' */ +#line 757 "griby.y" { char buf[80]; snprintf(buf, sizeof(buf), "%ld",(long)(grib_yyvsp[-4].lval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[-1].concept_condition));} -#line 3509 "y.tab.c" +#line 3518 "y.tab.c" break; - case 208: /* concept_value: FLOAT '=' '{' concept_conditions '}' */ -#line 756 "griby.y" + case 209: /* concept_value: FLOAT '=' '{' concept_conditions '}' */ +#line 759 "griby.y" { char buf[80]; snprintf(buf, sizeof(buf), "%g", (double)(grib_yyvsp[-4].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[-1].concept_condition));} -#line 3516 "y.tab.c" +#line 3525 "y.tab.c" break; - case 210: /* concept_conditions: concept_condition concept_conditions */ -#line 761 "griby.y" - { (grib_yyvsp[-1].concept_condition)->next = (grib_yyvsp[0].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[-1].concept_condition); } -#line 3522 "y.tab.c" - break; - - case 211: /* concept_condition: IDENT '=' expression ';' */ + case 211: /* concept_conditions: concept_condition concept_conditions */ #line 764 "griby.y" + { (grib_yyvsp[-1].concept_condition)->next = (grib_yyvsp[0].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[-1].concept_condition); } +#line 3531 "y.tab.c" + break; + + case 212: /* concept_condition: IDENT '=' expression ';' */ +#line 767 "griby.y" { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].exp),0); free((grib_yyvsp[-3].str)); } -#line 3528 "y.tab.c" +#line 3537 "y.tab.c" break; - case 212: /* concept_condition: IDENT '=' '[' integer_array ']' ';' */ -#line 765 "griby.y" + case 213: /* concept_condition: IDENT '=' '[' integer_array ']' ';' */ +#line 768 "griby.y" { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[-5].str),0,(grib_yyvsp[-2].ivalue)); free((grib_yyvsp[-5].str)); } -#line 3534 "y.tab.c" +#line 3543 "y.tab.c" break; - case 213: /* hash_array_value: STRING '=' '[' integer_array ']' */ -#line 769 "griby.y" + case 214: /* hash_array_value: STRING '=' '[' integer_array ']' */ +#line 772 "griby.y" { (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].ivalue)); free((grib_yyvsp[-4].str));} -#line 3541 "y.tab.c" +#line 3550 "y.tab.c" break; - case 214: /* hash_array_value: IDENT '=' '[' integer_array ']' */ -#line 771 "griby.y" + case 215: /* hash_array_value: IDENT '=' '[' integer_array ']' */ +#line 774 "griby.y" { (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[-4].str),(grib_yyvsp[-1].ivalue)); free((grib_yyvsp[-4].str));} -#line 3548 "y.tab.c" +#line 3557 "y.tab.c" break; - case 215: /* string_or_ident: SUBSTR '(' IDENT ',' INTEGER ',' INTEGER ')' */ -#line 775 "griby.y" - { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } -#line 3554 "y.tab.c" - break; - - case 216: /* string_or_ident: IDENT */ -#line 776 "griby.y" - { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[0].str),0,0); free((grib_yyvsp[0].str)); } -#line 3560 "y.tab.c" - break; - - case 217: /* string_or_ident: SUBSTR '(' STRING ',' INTEGER ',' INTEGER ')' */ -#line 777 "griby.y" - { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } -#line 3566 "y.tab.c" - break; - - case 218: /* string_or_ident: STRING */ + case 216: /* string_or_ident: SUBSTR '(' IDENT ',' INTEGER ',' INTEGER ')' */ #line 778 "griby.y" + { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } +#line 3563 "y.tab.c" + break; + + case 217: /* string_or_ident: IDENT */ +#line 779 "griby.y" + { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[0].str),0,0); free((grib_yyvsp[0].str)); } +#line 3569 "y.tab.c" + break; + + case 218: /* string_or_ident: SUBSTR '(' STRING ',' INTEGER ',' INTEGER ')' */ +#line 780 "griby.y" + { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str)); } +#line 3575 "y.tab.c" + break; + + case 219: /* string_or_ident: STRING */ +#line 781 "griby.y" { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[0].str)); free((grib_yyvsp[0].str)); } -#line 3572 "y.tab.c" +#line 3581 "y.tab.c" break; - case 220: /* atom: INTEGER */ -#line 782 "griby.y" - { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[0].lval)); } -#line 3578 "y.tab.c" - break; - - case 221: /* atom: FLOAT */ -#line 783 "griby.y" - { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[0].dval)); /* TODO: change to new_float_expression*/} -#line 3584 "y.tab.c" - break; - - case 222: /* atom: NIL */ + case 221: /* atom: INTEGER */ #line 785 "griby.y" - { (grib_yyval.exp) = NULL; } -#line 3590 "y.tab.c" + { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[0].lval)); } +#line 3587 "y.tab.c" break; - case 223: /* atom: DUMMY */ + case 222: /* atom: FLOAT */ #line 786 "griby.y" - { (grib_yyval.exp) = new_true_expression(grib_parser_context); } -#line 3596 "y.tab.c" + { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[0].dval)); /* TODO: change to new_float_expression*/} +#line 3593 "y.tab.c" break; - case 224: /* atom: '(' expression ')' */ -#line 787 "griby.y" - { (grib_yyval.exp) = (grib_yyvsp[-1].exp); } -#line 3602 "y.tab.c" - break; - - case 225: /* atom: '-' atom */ + case 223: /* atom: NIL */ #line 788 "griby.y" - { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[0].exp)); } -#line 3608 "y.tab.c" + { (grib_yyval.exp) = NULL; } +#line 3599 "y.tab.c" break; - case 226: /* atom: IDENT '(' ')' */ + case 224: /* atom: DUMMY */ #line 789 "griby.y" - { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[-2].str),NULL); free((grib_yyvsp[-2].str));} -#line 3614 "y.tab.c" + { (grib_yyval.exp) = new_true_expression(grib_parser_context); } +#line 3605 "y.tab.c" break; - case 227: /* atom: IDENT '(' argument_list ')' */ + case 225: /* atom: '(' expression ')' */ #line 790 "griby.y" + { (grib_yyval.exp) = (grib_yyvsp[-1].exp); } +#line 3611 "y.tab.c" + break; + + case 226: /* atom: '-' atom */ +#line 791 "griby.y" + { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[0].exp)); } +#line 3617 "y.tab.c" + break; + + case 227: /* atom: IDENT '(' ')' */ +#line 792 "griby.y" + { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[-2].str),NULL); free((grib_yyvsp[-2].str));} +#line 3623 "y.tab.c" + break; + + case 228: /* atom: IDENT '(' argument_list ')' */ +#line 793 "griby.y" { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].explist)); free((grib_yyvsp[-3].str));} -#line 3620 "y.tab.c" +#line 3629 "y.tab.c" break; - case 228: /* power: atom '^' power */ -#line 794 "griby.y" + case 229: /* power: atom '^' power */ +#line 797 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_pow,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3626 "y.tab.c" +#line 3635 "y.tab.c" break; - case 230: /* factor: factor '*' power */ -#line 798 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3632 "y.tab.c" - break; - - case 231: /* factor: factor '/' power */ -#line 799 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3638 "y.tab.c" - break; - - case 232: /* factor: factor '%' power */ -#line 800 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3644 "y.tab.c" - break; - - case 233: /* factor: factor BIT power */ + case 231: /* factor: factor '*' power */ #line 801 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3650 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3641 "y.tab.c" break; - case 234: /* factor: factor BITOFF power */ + case 232: /* factor: factor '/' power */ #line 802 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3656 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3647 "y.tab.c" break; - case 236: /* factor: LENGTH '(' IDENT ')' */ + case 233: /* factor: factor '%' power */ +#line 803 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3653 "y.tab.c" + break; + + case 234: /* factor: factor BIT power */ #line 804 "griby.y" - { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[-1].str)); free((grib_yyvsp[-1].str));} -#line 3662 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3659 "y.tab.c" break; - case 237: /* factor: IS_IN_LIST '(' IDENT ',' STRING ')' */ + case 235: /* factor: factor BITOFF power */ #line 805 "griby.y" - { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} -#line 3668 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3665 "y.tab.c" break; - case 238: /* factor: IS_IN_DICT '(' IDENT ',' STRING ')' */ -#line 806 "griby.y" - { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} -#line 3674 "y.tab.c" - break; - - case 239: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ')' */ + case 237: /* factor: LENGTH '(' IDENT ')' */ #line 807 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].lval),0); free((grib_yyvsp[-3].str));} -#line 3680 "y.tab.c" + { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[-1].str)); free((grib_yyvsp[-1].str));} +#line 3671 "y.tab.c" break; - case 240: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ',' INTEGER ')' */ + case 238: /* factor: IS_IN_LIST '(' IDENT ',' STRING ')' */ #line 808 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str));} -#line 3686 "y.tab.c" + { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} +#line 3677 "y.tab.c" break; - case 241: /* factor: IS_INTEGER '(' IDENT ')' */ + case 239: /* factor: IS_IN_DICT '(' IDENT ',' STRING ')' */ #line 809 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-1].str),0,0); free((grib_yyvsp[-1].str));} -#line 3692 "y.tab.c" + { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].str)); free((grib_yyvsp[-3].str));free((grib_yyvsp[-1].str));} +#line 3683 "y.tab.c" break; - case 242: /* term: term '+' factor */ + case 240: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ')' */ +#line 810 "griby.y" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].lval),0); free((grib_yyvsp[-3].str));} +#line 3689 "y.tab.c" + break; + + case 241: /* factor: IS_INTEGER '(' IDENT ',' INTEGER ',' INTEGER ')' */ +#line 811 "griby.y" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-5].str),(grib_yyvsp[-3].lval),(grib_yyvsp[-1].lval)); free((grib_yyvsp[-5].str));} +#line 3695 "y.tab.c" + break; + + case 242: /* factor: IS_INTEGER '(' IDENT ')' */ #line 812 "griby.y" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[-1].str),0,0); free((grib_yyvsp[-1].str));} +#line 3701 "y.tab.c" + break; + + case 243: /* term: term '+' factor */ +#line 815 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3698 "y.tab.c" +#line 3707 "y.tab.c" break; - case 243: /* term: term '-' factor */ -#line 813 "griby.y" + case 244: /* term: term '-' factor */ +#line 816 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_sub,&grib_op_sub_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3704 "y.tab.c" +#line 3713 "y.tab.c" break; - case 245: /* condition: condition GT term */ -#line 817 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3710 "y.tab.c" - break; - - case 246: /* condition: condition EQ term */ -#line 819 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3716 "y.tab.c" - break; - - case 247: /* condition: condition LT term */ + case 246: /* condition: condition GT term */ #line 820 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3722 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3719 "y.tab.c" break; - case 248: /* condition: condition GE term */ -#line 821 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3728 "y.tab.c" - break; - - case 249: /* condition: condition LE term */ + case 247: /* condition: condition EQ term */ #line 822 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3734 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3725 "y.tab.c" break; - case 250: /* condition: condition NE term */ + case 248: /* condition: condition LT term */ #line 823 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3740 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3731 "y.tab.c" break; - case 251: /* condition: string_or_ident IS string_or_ident */ + case 249: /* condition: condition GE term */ #line 824 "griby.y" - { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp),1); } -#line 3746 "y.tab.c" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3737 "y.tab.c" break; - case 252: /* condition: string_or_ident ISNOT string_or_ident */ + case 250: /* condition: condition LE term */ #line 825 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3743 "y.tab.c" + break; + + case 251: /* condition: condition NE term */ +#line 826 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } +#line 3749 "y.tab.c" + break; + + case 252: /* condition: string_or_ident IS string_or_ident */ +#line 827 "griby.y" + { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp),1); } +#line 3755 "y.tab.c" + break; + + case 253: /* condition: string_or_ident ISNOT string_or_ident */ +#line 828 "griby.y" { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp),0); } -#line 3752 "y.tab.c" +#line 3761 "y.tab.c" break; - case 253: /* condition: NOT condition */ -#line 830 "griby.y" + case 254: /* condition: NOT condition */ +#line 833 "griby.y" { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[0].exp)); } -#line 3758 "y.tab.c" +#line 3767 "y.tab.c" break; - case 255: /* conjunction: conjunction AND condition */ -#line 834 "griby.y" + case 256: /* conjunction: conjunction AND condition */ +#line 837 "griby.y" { (grib_yyval.exp) = new_logical_and_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp)); } -#line 3764 "y.tab.c" +#line 3773 "y.tab.c" break; - case 257: /* disjunction: disjunction OR conjunction */ -#line 838 "griby.y" + case 258: /* disjunction: disjunction OR conjunction */ +#line 841 "griby.y" { (grib_yyval.exp) = new_logical_or_expression(grib_parser_context,(grib_yyvsp[-2].exp),(grib_yyvsp[0].exp));} -#line 3770 "y.tab.c" +#line 3779 "y.tab.c" break; - case 262: /* rule_entry: IDENT '=' expression ';' */ -#line 852 "griby.y" + case 263: /* rule_entry: IDENT '=' expression ';' */ +#line 855 "griby.y" { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[-3].str),(grib_yyvsp[-1].exp)); free((grib_yyvsp[-3].str)); } -#line 3776 "y.tab.c" +#line 3785 "y.tab.c" break; - case 263: /* rule_entry: SKIP ';' */ -#line 853 "griby.y" + case 264: /* rule_entry: SKIP ';' */ +#line 856 "griby.y" { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);} -#line 3782 "y.tab.c" +#line 3791 "y.tab.c" break; - case 265: /* rule_entries: rule_entry rule_entries */ -#line 857 "griby.y" - { (grib_yyvsp[-1].rule_entry)->next = (grib_yyvsp[0].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[-1].rule_entry); } -#line 3788 "y.tab.c" - break; - - case 266: /* fact: rule_entry */ + case 266: /* rule_entries: rule_entry rule_entries */ #line 860 "griby.y" + { (grib_yyvsp[-1].rule_entry)->next = (grib_yyvsp[0].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[-1].rule_entry); } +#line 3797 "y.tab.c" + break; + + case 267: /* fact: rule_entry */ +#line 863 "griby.y" { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[0].rule_entry)); } -#line 3794 "y.tab.c" +#line 3803 "y.tab.c" break; - case 267: /* conditional_rule: IF '(' expression ')' '{' rule_entries '}' */ -#line 864 "griby.y" + case 268: /* conditional_rule: IF '(' expression ')' '{' rule_entries '}' */ +#line 867 "griby.y" { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[-4].exp),(grib_yyvsp[-1].rule_entry)); } -#line 3800 "y.tab.c" +#line 3809 "y.tab.c" break; - case 269: /* rules: rule rules */ -#line 868 "griby.y" + case 270: /* rules: rule rules */ +#line 871 "griby.y" { (grib_yyvsp[-1].rules)->next = (grib_yyvsp[0].rules); (grib_yyval.rules) = (grib_yyvsp[-1].rules); } -#line 3806 "y.tab.c" +#line 3815 "y.tab.c" break; -#line 3810 "y.tab.c" +#line 3819 "y.tab.c" default: break; } @@ -3999,7 +4008,7 @@ grib_yyreturnlab: return grib_yyresult; } -#line 872 "griby.y" +#line 875 "griby.y" static grib_concept_value *_reverse_concept(grib_concept_value *r,grib_concept_value *s) diff --git a/src/griby.y b/src/griby.y index c11df7cfd..c1bcff69d 100644 --- a/src/griby.y +++ b/src/griby.y @@ -707,10 +707,13 @@ concept_block: CONCEPT IDENT '{' concept_list '}' flags { $$ = grib_action_creat | CONCEPT IDENT '(' IDENT ',' IDENT ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,$10,0,$12,0); free($2);free($6);free($4);free($8);free($10); } | CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,$10,$12,$14,0); free($2);free($6);free($4);free($8);free($10);free($12); } | CONCEPT IDENT '(' IDENT ',' STRING ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,0,0,$10,0); free($2);free($6);free($4);free($8); } + | CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$4,0,$8,$2,$6,$10,$12,0,$14,0); free($4);free($8);free($6);free($10); free($12); free($2);} + | CONCEPT IDENT '.' IDENT '(' IDENT ',' IDENT ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$4,0,$8,$2,$6,$10,$12,0,$14,0); free($4);free($8);free($6);free($10); free($12); free($2);} | CONCEPT IDENT '.' IDENT '(' IDENT ',' STRING ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$4,0,$8,$2,$6,$10,0,0,$12,0); free($4);free($8);free($6);free($10); free($2);} | CONCEPT IDENT '.' IDENT '{' concept_list '}' flags { $$ = grib_action_create_concept(grib_parser_context,$4,$6,0,$2,0,0,0,0,$8,0); free($2);free($4); } | CONCEPT IDENT '.' IDENT '(' IDENT ')' '{' concept_list '}' flags { $$ = grib_action_create_concept(grib_parser_context,$4,$9,0,$2,$6,0,0,0,$11,0); free($2);free($4);free($6); } + | CONCEPT_NOFAIL IDENT '{' concept_list '}' flags { $$ = grib_action_create_concept(grib_parser_context,$2,$4,0,0,0,0,0,0,$6,1); free($2); } | CONCEPT_NOFAIL IDENT '(' IDENT ')' '{' concept_list '}' flags { $$ = grib_action_create_concept(grib_parser_context,$2,$7,0,0,$4,0,0,0,$9,1); free($2);free($4); } | CONCEPT_NOFAIL IDENT '(' IDENT ',' STRING ',' IDENT ',' IDENT ')' flags { $$ = grib_action_create_concept(grib_parser_context,$2,0,$6,0,$4,$8,$10,0,$12,1); free($2);free($6);free($4);free($8);free($10); } From 3aa9e4001c36c44b3f303f353c2d2742efdb836f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Thu, 26 Sep 2024 15:36:15 +0000 Subject: [PATCH 25/37] ECC-1924: GRIB2: Reintroduce WMO deprecated parameters to legacy for NOAA --- definitions/grib2/name.legacy.def | 12 ++++++++++++ definitions/grib2/paramId.legacy.def | 12 ++++++++++++ definitions/grib2/shortName.legacy.def | 12 ++++++++++++ definitions/grib2/units.legacy.def | 12 ++++++++++++ 4 files changed, 48 insertions(+) diff --git a/definitions/grib2/name.legacy.def b/definitions/grib2/name.legacy.def index 21a90fb5d..b7be70b1a 100644 --- a/definitions/grib2/name.legacy.def +++ b/definitions/grib2/name.legacy.def @@ -186,3 +186,15 @@ parameterCategory = 0 ; parameterNumber = 2 ; } +#Maximum temperature +'Maximum temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 4 ; +} +#Minimum temperature +'Minimum temperature' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 5 ; +} diff --git a/definitions/grib2/paramId.legacy.def b/definitions/grib2/paramId.legacy.def index 2b26c1398..d7dfd01da 100644 --- a/definitions/grib2/paramId.legacy.def +++ b/definitions/grib2/paramId.legacy.def @@ -186,3 +186,15 @@ parameterCategory = 0 ; parameterNumber = 2 ; } +#Maximum temperature +'3015' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 4 ; +} +#Minimum temperature +'3016' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 5 ; +} diff --git a/definitions/grib2/shortName.legacy.def b/definitions/grib2/shortName.legacy.def index ffd6469d2..f716c3179 100644 --- a/definitions/grib2/shortName.legacy.def +++ b/definitions/grib2/shortName.legacy.def @@ -186,3 +186,15 @@ parameterCategory = 0 ; parameterNumber = 2 ; } +#Maximum temperature +'tmax' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 4 ; +} +#Minimum temperature +'tmin' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 5 ; +} diff --git a/definitions/grib2/units.legacy.def b/definitions/grib2/units.legacy.def index 3a102bd06..d540ec19c 100644 --- a/definitions/grib2/units.legacy.def +++ b/definitions/grib2/units.legacy.def @@ -186,3 +186,15 @@ parameterCategory = 0 ; parameterNumber = 2 ; } +#Maximum temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 4 ; +} +#Minimum temperature +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 5 ; +} From 30aa0cb3e75feb8a4b8bc79a70309c160696091c Mon Sep 17 00:00:00 2001 From: shahramn Date: Fri, 27 Sep 2024 12:32:04 +0100 Subject: [PATCH 26/37] Testing: Move long test to extras --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 40c1b2f2b..cba77adcd 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -144,7 +144,6 @@ if( HAVE_BUILD_TOOLS ) grib_ecc-1708 grib_ecc-1691 grib_ecc-1766 - grib_ecc-1806 grib_ecc-1829 bufr_ecc-1028 bufr_ecc-1195 @@ -276,6 +275,7 @@ if( HAVE_BUILD_TOOLS ) grib_ecc-1467 grib_ecc-1764 grib_ecc-1792 + grib_ecc-1806 grib_ecc-1907 grib_modelName grib_sub_hourly From a14888bf9774f6a46ea6d41c74f45af5caf390b2 Mon Sep 17 00:00:00 2001 From: shahramn Date: Fri, 27 Sep 2024 12:32:32 +0100 Subject: [PATCH 27/37] Tools: codes_export_resource --- tools/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index e2016a726..9cb1eec4e 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -27,7 +27,7 @@ ecbuild_add_library( TARGET ecc_tools # tools binaries list( APPEND ecc_tools_binaries - codes_info codes_count codes_split_file + codes_info codes_count codes_split_file codes_export_resource grib_histogram grib_filter grib_ls grib_dump grib2ppm grib_set grib_get grib_get_data grib_copy grib_compare codes_parser grib_index_build bufr_index_build @@ -39,7 +39,6 @@ list( APPEND ecc_tools_binaries list( APPEND ecc_tools_binaries_extra grib_repair grib_to_json - codes_export_resource grib_check_gaussian_grid bufr_split_by_rdbSubtype ) From 8473df1df82c5dcc8207f59a3946e70ffa45699d Mon Sep 17 00:00:00 2001 From: shahramn Date: Fri, 27 Sep 2024 16:35:39 +0100 Subject: [PATCH 28/37] ECC-1926: GRIB2: Incorrect decoding of data values when packingType=grid_complex_spatial_differencing --- .../grib_accessor_class_data_g22order_packing.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/accessor/grib_accessor_class_data_g22order_packing.cc b/src/accessor/grib_accessor_class_data_g22order_packing.cc index c4949e89e..55f259a17 100644 --- a/src/accessor/grib_accessor_class_data_g22order_packing.cc +++ b/src/accessor/grib_accessor_class_data_g22order_packing.cc @@ -1464,7 +1464,7 @@ int grib_accessor_class_data_g22order_packing_t::pack_double(grib_accessor* a, c } template -static int unpack(grib_accessor* a, T* val, const size_t* len) +static int unpack(grib_accessor* a, T* val, size_t* len) { static_assert(std::is_floating_point::value, "Requires floating points numbers"); grib_accessor_data_g22order_packing_t* self = reinterpret_cast(a); @@ -1566,6 +1566,14 @@ static int unpack(grib_accessor* a, T* val, const size_t* len) self->dirty = 0; + if (bits_per_value == 0) { + for (i = 0; i < n_vals; i++) { + val[i] = reference_value; + } + *len = n_vals; + return GRIB_SUCCESS; + } + sec_val = (long*)grib_context_malloc(a->context, (n_vals) * sizeof(long)); if (!sec_val) return GRIB_OUT_OF_MEMORY; memset(sec_val, 0, (n_vals) * sizeof(long)); // See SUP-718 From a055b6b8258f22e44ba41bb29bbdfdd026ad021d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 27 Sep 2024 16:33:39 +0000 Subject: [PATCH 29/37] ECC-1924: Add legacy parameters --- definitions/grib2/cfVarName.legacy.def | 163 +++++++++++++++++++++++++ definitions/grib2/name.legacy.def | 54 ++++++++ definitions/grib2/paramId.legacy.def | 54 ++++++++ definitions/grib2/shortName.legacy.def | 54 ++++++++ definitions/grib2/units.legacy.def | 54 ++++++++ 5 files changed, 379 insertions(+) create mode 100644 definitions/grib2/cfVarName.legacy.def diff --git a/definitions/grib2/cfVarName.legacy.def b/definitions/grib2/cfVarName.legacy.def new file mode 100644 index 000000000..896eba6f3 --- /dev/null +++ b/definitions/grib2/cfVarName.legacy.def @@ -0,0 +1,163 @@ +#Minimum dew point depression +#Minimum dew point depression +'mindpd' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Minimum dew point depression +'mindpd' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Maximum relative humidity +'maxrh' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 27 ; +} +#Maximum absolute humidity +'maxah' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 28 ; +} +#Maximum wind speed +'maxgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; +} +#Net long wave radiation flux (surface) +'nlwrs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; +} +#Net long wave radiation flux (top of atmosphere) +'nlwrt' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; +} +#Maximum snow albedo +'mxsalb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 17 ; +} +#Soil temperature +'sot' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; +} +#Minimum dew point depression +'mindpd' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Maximum relative humidity +'maxrh' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 27 ; +} +#Maximum absolute humidity +'maxah' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 28 ; +} +#Maximum wind speed +'maxgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; +} +#Net long wave radiation flux (surface) +'nlwrs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; +} +#Net long wave radiation flux (top of atmosphere) +'nlwrt' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; +} +#Maximum snow albedo +'mxsalb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 17 ; +} +#Soil temperature +'sot' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; +} +#Soil moisture +'som' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 19 ; +} +#Minimum dew point depression +'mindpd' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Maximum relative humidity +'maxrh' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 27 ; +} +#Maximum absolute humidity +'maxah' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 28 ; +} +#Maximum wind speed +'maxgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; +} +#Net long wave radiation flux (surface) +'nlwrs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; +} +#Net long wave radiation flux (top of atmosphere) +'nlwrt' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; +} +#Maximum snow albedo +'mxsalb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 17 ; +} +#Soil temperature +'sot' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 18 ; +} +#Soil moisture +'som' = { + discipline = 2 ; + parameterCategory = 3 ; + parameterNumber = 19 ; +} diff --git a/definitions/grib2/name.legacy.def b/definitions/grib2/name.legacy.def index b7be70b1a..8d87c229c 100644 --- a/definitions/grib2/name.legacy.def +++ b/definitions/grib2/name.legacy.def @@ -198,3 +198,57 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Minimum dew point depression +'Minimum dew point depression' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Maximum relative humidity +'Maximum relative humidity' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 27 ; +} +#Maximum absolute humidity +'Maximum absolute humidity' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 28 ; +} +#Maximum wind speed +'Maximum wind speed' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; +} +#Net long wave radiation flux (surface) +'Net long wave radiation flux (surface)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; +} +#Net long wave radiation flux (top of atmosphere) +'Net long wave radiation flux (top of atmosphere)' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; +} +#Maximum snow albedo +'Maximum snow albedo' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 17 ; +} +#Soil temperature +'Soil temperature' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 2 ; +} +#Soil moisture +'Soil moisture' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; +} diff --git a/definitions/grib2/paramId.legacy.def b/definitions/grib2/paramId.legacy.def index d7dfd01da..9d4bb8961 100644 --- a/definitions/grib2/paramId.legacy.def +++ b/definitions/grib2/paramId.legacy.def @@ -198,3 +198,57 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Minimum dew point depression +'260006' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Maximum relative humidity +'260023' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 27 ; +} +#Maximum absolute humidity +'260024' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 28 ; +} +#Maximum wind speed +'260064' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; +} +#Net long wave radiation flux (surface) +'260095' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; +} +#Net long wave radiation flux (top of atmosphere) +'260096' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; +} +#Maximum snow albedo +'260161' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 17 ; +} +#Soil temperature +'228139' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 2 ; +} +#Soil moisture +'228039' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; +} diff --git a/definitions/grib2/shortName.legacy.def b/definitions/grib2/shortName.legacy.def index f716c3179..e21fd8b0f 100644 --- a/definitions/grib2/shortName.legacy.def +++ b/definitions/grib2/shortName.legacy.def @@ -198,3 +198,57 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Minimum dew point depression +'mindpd' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Maximum relative humidity +'maxrh' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 27 ; +} +#Maximum absolute humidity +'maxah' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 28 ; +} +#Maximum wind speed +'maxgust' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; +} +#Net long wave radiation flux (surface) +'nlwrs' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; +} +#Net long wave radiation flux (top of atmosphere) +'nlwrt' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; +} +#Maximum snow albedo +'mxsalb' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 17 ; +} +#Soil temperature +'st' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 2 ; +} +#Soil moisture +'sm' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; +} diff --git a/definitions/grib2/units.legacy.def b/definitions/grib2/units.legacy.def index d540ec19c..efe70cc8c 100644 --- a/definitions/grib2/units.legacy.def +++ b/definitions/grib2/units.legacy.def @@ -198,3 +198,57 @@ parameterCategory = 0 ; parameterNumber = 5 ; } +#Minimum dew point depression +'K' = { + discipline = 0 ; + parameterCategory = 0 ; + parameterNumber = 14 ; +} +#Maximum relative humidity +'%' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 27 ; +} +#Maximum absolute humidity +'kg m**-3' = { + discipline = 0 ; + parameterCategory = 1 ; + parameterNumber = 28 ; +} +#Maximum wind speed +'m s**-1' = { + discipline = 0 ; + parameterCategory = 2 ; + parameterNumber = 21 ; +} +#Net long wave radiation flux (surface) +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 0 ; +} +#Net long wave radiation flux (top of atmosphere) +'W m**-2' = { + discipline = 0 ; + parameterCategory = 5 ; + parameterNumber = 1 ; +} +#Maximum snow albedo +'%' = { + discipline = 0 ; + parameterCategory = 19 ; + parameterNumber = 17 ; +} +#Soil temperature +'K' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 2 ; +} +#Soil moisture +'kg m**-3' = { + discipline = 2 ; + parameterCategory = 0 ; + parameterNumber = 22 ; +} From a2b0b44220c0fef429613a18964914eeb02ae2c5 Mon Sep 17 00:00:00 2001 From: shahramn Date: Sat, 28 Sep 2024 13:20:56 +0100 Subject: [PATCH 30/37] Testing: ECC-1926 --- definitions/grib2/cfVarName.legacy.def | 163 ------------------------- tests/grib_statistics.sh | 22 ++++ 2 files changed, 22 insertions(+), 163 deletions(-) delete mode 100644 definitions/grib2/cfVarName.legacy.def diff --git a/definitions/grib2/cfVarName.legacy.def b/definitions/grib2/cfVarName.legacy.def deleted file mode 100644 index 896eba6f3..000000000 --- a/definitions/grib2/cfVarName.legacy.def +++ /dev/null @@ -1,163 +0,0 @@ -#Minimum dew point depression -#Minimum dew point depression -'mindpd' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 14 ; -} -#Minimum dew point depression -'mindpd' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 14 ; -} -#Maximum relative humidity -'maxrh' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; -} -#Maximum absolute humidity -'maxah' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; -} -#Maximum wind speed -'maxgust' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 21 ; -} -#Net long wave radiation flux (surface) -'nlwrs' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; -} -#Net long wave radiation flux (top of atmosphere) -'nlwrt' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; -} -#Maximum snow albedo -'mxsalb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; -} -#Soil temperature -'sot' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; -} -#Minimum dew point depression -'mindpd' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 14 ; -} -#Maximum relative humidity -'maxrh' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; -} -#Maximum absolute humidity -'maxah' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; -} -#Maximum wind speed -'maxgust' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 21 ; -} -#Net long wave radiation flux (surface) -'nlwrs' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; -} -#Net long wave radiation flux (top of atmosphere) -'nlwrt' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; -} -#Maximum snow albedo -'mxsalb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; -} -#Soil temperature -'sot' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; -} -#Soil moisture -'som' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 19 ; -} -#Minimum dew point depression -'mindpd' = { - discipline = 0 ; - parameterCategory = 0 ; - parameterNumber = 14 ; -} -#Maximum relative humidity -'maxrh' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 27 ; -} -#Maximum absolute humidity -'maxah' = { - discipline = 0 ; - parameterCategory = 1 ; - parameterNumber = 28 ; -} -#Maximum wind speed -'maxgust' = { - discipline = 0 ; - parameterCategory = 2 ; - parameterNumber = 21 ; -} -#Net long wave radiation flux (surface) -'nlwrs' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 0 ; -} -#Net long wave radiation flux (top of atmosphere) -'nlwrt' = { - discipline = 0 ; - parameterCategory = 5 ; - parameterNumber = 1 ; -} -#Maximum snow albedo -'mxsalb' = { - discipline = 0 ; - parameterCategory = 19 ; - parameterNumber = 17 ; -} -#Soil temperature -'sot' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 18 ; -} -#Soil moisture -'som' = { - discipline = 2 ; - parameterCategory = 3 ; - parameterNumber = 19 ; -} diff --git a/tests/grib_statistics.sh b/tests/grib_statistics.sh index 9a71f7082..be072d073 100755 --- a/tests/grib_statistics.sh +++ b/tests/grib_statistics.sh @@ -75,6 +75,28 @@ input=${data_dir}/gfs.complex.mvmu.grib2 stats=`${tools_dir}/grib_get -F%.2f -p max,min,avg $input` [ "$stats" = "2.81 0.00 0.30" ] +# ECC-1926 +# grid_complex_spatial_differencing with bpv=0 +# Create a data section similar to the attached file dswrf-1.grib2 +cat >$tempFilt<$tempFilt< Date: Fri, 20 Sep 2024 08:29:36 +0000 Subject: [PATCH 31/37] adding support for DART --- definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def | 1 + definitions/grib2/localConcepts/ecmf/unstructuredGridType.def | 1 + 2 files changed, 2 insertions(+) diff --git a/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def b/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def index 0f9911a54..2a1d885eb 100644 --- a/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def +++ b/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def @@ -6,3 +6,4 @@ 'F' = { numberOfGridInReference = 5; } 'C' = { numberOfGridInReference = 6; } 'N' = { numberOfGridInReference = 7; } +'D' = { numberOfGridInReference = 8; } diff --git a/definitions/grib2/localConcepts/ecmf/unstructuredGridType.def b/definitions/grib2/localConcepts/ecmf/unstructuredGridType.def index dfcc93e2f..8264d8121 100644 --- a/definitions/grib2/localConcepts/ecmf/unstructuredGridType.def +++ b/definitions/grib2/localConcepts/ecmf/unstructuredGridType.def @@ -8,3 +8,4 @@ 'eORCA12' = { numberOfGridUsed = 7; } 'CORE2' = { numberOfGridUsed = 8; } 'NG5' = { numberOfGridUsed = 9; } +'DART' = { numberOfGridUsed = 10; } From db04edbb90a375440b1326b14486557e55f1db66 Mon Sep 17 00:00:00 2001 From: Stefanie Reuter Date: Fri, 20 Sep 2024 19:07:06 +0000 Subject: [PATCH 32/37] removed unnecessary Subtype --- definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def | 1 - 1 file changed, 1 deletion(-) diff --git a/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def b/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def index 2a1d885eb..0f9911a54 100644 --- a/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def +++ b/definitions/grib2/localConcepts/ecmf/unstructuredGridSubtype.def @@ -6,4 +6,3 @@ 'F' = { numberOfGridInReference = 5; } 'C' = { numberOfGridInReference = 6; } 'N' = { numberOfGridInReference = 7; } -'D' = { numberOfGridInReference = 8; } From 0fd34ba32b2f571aa7a32a2e7badd730d5e1a09d Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 3 Oct 2024 09:53:17 +0100 Subject: [PATCH 33/37] Testing: ECC-1926 conversion --- tests/grib_statistics.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/grib_statistics.sh b/tests/grib_statistics.sh index be072d073..b2e68356c 100755 --- a/tests/grib_statistics.sh +++ b/tests/grib_statistics.sh @@ -93,9 +93,14 @@ cat >$tempFilt<$tempFilt< Date: Thu, 3 Oct 2024 09:59:47 +0100 Subject: [PATCH 34/37] CCSDS packing: max bitsPerValue --- src/accessor/grib_accessor_class_data_ccsds_packing.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/accessor/grib_accessor_class_data_ccsds_packing.cc b/src/accessor/grib_accessor_class_data_ccsds_packing.cc index 5b0813bfd..851e73e3a 100644 --- a/src/accessor/grib_accessor_class_data_ccsds_packing.cc +++ b/src/accessor/grib_accessor_class_data_ccsds_packing.cc @@ -90,6 +90,8 @@ static void print_aec_stream_info(struct aec_stream* strm, const char* func) fprintf(stderr, "ECCODES DEBUG CCSDS %s aec_stream.avail_in=%lu\n", func, strm->avail_in); } +#define MAX_BITS_PER_VALUE 32 + int grib_accessor_class_data_ccsds_packing_t::pack_double(grib_accessor* a, const double* val, size_t* len) { grib_accessor_data_ccsds_packing_t* self = (grib_accessor_data_ccsds_packing_t*)a; @@ -309,8 +311,8 @@ int grib_accessor_class_data_ccsds_packing_t::pack_double(grib_accessor* a, cons } break; default: - grib_context_log(a->context, GRIB_LOG_ERROR, "%s pack_double: packing %s, bits_per_value=%ld (max 32)", - cclass_name, a->name, bits_per_value); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s pack_double: packing %s, bitsPerValue=%ld (max %ld)", + cclass_name, a->name, bits_per_value, MAX_BITS_PER_VALUE); err = GRIB_INVALID_BPV; goto cleanup; } @@ -508,8 +510,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len) } break; default: - grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: unpacking %s, bits_per_value=%ld (max 32)", - cclass_name, __func__, a->name, bits_per_value); + grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: unpacking %s, bitsPerValue=%ld (max %ld)", + cclass_name, __func__, a->name, bits_per_value, MAX_BITS_PER_VALUE); err = GRIB_INVALID_BPV; goto cleanup; } From 0fe66b042a0a24570bf8e6beab096269cbb84fcb Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 3 Oct 2024 12:36:21 +0100 Subject: [PATCH 35/37] ECC-1927: GRIB: grid_second_order hanging when encoding fields with Infinite values (try 1) --- examples/F90/CMakeLists.txt | 1 + .../F90/grib_infinity_grid_second_order.f90 | 42 +++++++++++++++++++ .../F90/grib_infinity_grid_second_order.sh | 39 +++++++++++++++++ src/grib_scaling.cc | 6 +++ 4 files changed, 88 insertions(+) create mode 100644 examples/F90/grib_infinity_grid_second_order.f90 create mode 100755 examples/F90/grib_infinity_grid_second_order.sh diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index 7ec9c28b2..c98f234df 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -55,6 +55,7 @@ if( HAVE_BUILD_TOOLS ) grib_get_set_uuid grib_clone grib_ecc-1316 + grib_infinity_grid_second_order bufr_attributes bufr_clone bufr_expanded diff --git a/examples/F90/grib_infinity_grid_second_order.f90 b/examples/F90/grib_infinity_grid_second_order.f90 new file mode 100644 index 000000000..cfcd2e32a --- /dev/null +++ b/examples/F90/grib_infinity_grid_second_order.f90 @@ -0,0 +1,42 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! Description: issue with grid_second_order hanging when encoding fields with infinite values +! +! +USE eccodes +USE ieee_arithmetic + +IMPLICIT NONE + +INTEGER :: IGRIBH +REAL(KIND=8) :: ZT (421*441) + +CHARACTER*32 :: CLPACKING ! grid_simple / grid_second_order +CHARACTER*32 :: CLINFINITY ! 0 / 1 + +CALL GETARG (1, CLPACKING) +CALL GETARG (2, CLINFINITY) + +CALL codes_grib_new_from_samples(IGRIBH, "regular_ll_sfc_grib2") +CALL codes_set_long (IGRIBH, "Ni", 421_8) +CALL codes_set_long (IGRIBH, "Nj", 441_8) +CALL codes_set_long (IGRIBH, "bitsPerValue", 16_8) +CALL codes_set_string (IGRIBH, "packingType", TRIM (CLPACKING)) + +ZT = 0._8 + +IF (CLINFINITY == '1') THEN + ZT (1) = IEEE_VALUE (0._8, IEEE_POSITIVE_INF) +ENDIF + +CALL codes_set_real8_array (IGRIBH, "values", ZT) +! write (*,*) 'status=',status +! write (*,*) 'ZT= ',ZT(1) + +END diff --git a/examples/F90/grib_infinity_grid_second_order.sh b/examples/F90/grib_infinity_grid_second_order.sh new file mode 100755 index 000000000..1da3c47b2 --- /dev/null +++ b/examples/F90/grib_infinity_grid_second_order.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +for encoding in grid_simple grid_second_order +do + + for infinity in 0 1 + do + + if [ $infinity -eq 1 ] + then + set +e + fi + + ${examples_dir}/eccodes_f_grib_infinity_grid_second_order $encoding $infinity + c=$? + + if [ $infinity -eq 1 ] + then + set -e + if [ $c -eq 0 ] + then + echo "Encoding infinite numbers should fail" + exit 1 + fi + fi + + done + +done diff --git a/src/grib_scaling.cc b/src/grib_scaling.cc index e49a1e6dc..c48e0159b 100644 --- a/src/grib_scaling.cc +++ b/src/grib_scaling.cc @@ -10,6 +10,7 @@ #include "grib_scaling.h" #include "grib_api_internal.h" +#include // Unfortunately, metkit uses grib_power() (illegal usage of private API) // As soon as it is fixed, the wrapper below can be deleted @@ -26,6 +27,11 @@ long grib_get_binary_scale_fact(double max, double min, long bpval, int* error) unsigned long maxint = 0; const size_t ulong_size = sizeof(maxint) * 8; + if ((isnan(range) || isinf(range))) { + *error = GRIB_OUT_OF_RANGE; /*overflow*/ + return 0; + } + /* See ECC-246 unsigned long maxint = codes_power(bpval,2) - 1; double dmaxint=(double)maxint; From 7608b3001dba324870f305273f55cf081f0026c6 Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 3 Oct 2024 13:03:56 +0100 Subject: [PATCH 36/37] ECC-1927: GRIB: grid_second_order hanging when encoding fields with Infinite values (try 2) --- .../F90/grib_infinity_grid_second_order.f90 | 2 -- examples/F90/grib_infinity_grid_second_order.sh | 17 +++++------------ .../grib_accessor_class_data_ccsds_packing.cc | 3 ++- .../grib_accessor_class_data_complex_packing.cc | 1 - ...a_g1second_order_general_extended_packing.cc | 4 ++++ .../grib_accessor_class_data_png_packing.cc | 1 + 6 files changed, 12 insertions(+), 16 deletions(-) diff --git a/examples/F90/grib_infinity_grid_second_order.f90 b/examples/F90/grib_infinity_grid_second_order.f90 index cfcd2e32a..f61e6c492 100644 --- a/examples/F90/grib_infinity_grid_second_order.f90 +++ b/examples/F90/grib_infinity_grid_second_order.f90 @@ -36,7 +36,5 @@ IF (CLINFINITY == '1') THEN ENDIF CALL codes_set_real8_array (IGRIBH, "values", ZT) -! write (*,*) 'status=',status -! write (*,*) 'ZT= ',ZT(1) END diff --git a/examples/F90/grib_infinity_grid_second_order.sh b/examples/F90/grib_infinity_grid_second_order.sh index 1da3c47b2..38c2b579e 100755 --- a/examples/F90/grib_infinity_grid_second_order.sh +++ b/examples/F90/grib_infinity_grid_second_order.sh @@ -10,30 +10,23 @@ . ./include.ctest.sh -for encoding in grid_simple grid_second_order -do +for encoding in grid_simple grid_second_order; do + for infinity in 0 1; do - for infinity in 0 1 - do - - if [ $infinity -eq 1 ] - then + if [ $infinity -eq 1 ]; then set +e fi ${examples_dir}/eccodes_f_grib_infinity_grid_second_order $encoding $infinity c=$? - if [ $infinity -eq 1 ] - then + if [ $infinity -eq 1 ]; then set -e - if [ $c -eq 0 ] - then + if [ $c -eq 0 ]; then echo "Encoding infinite numbers should fail" exit 1 fi fi done - done diff --git a/src/accessor/grib_accessor_class_data_ccsds_packing.cc b/src/accessor/grib_accessor_class_data_ccsds_packing.cc index 851e73e3a..44a7e2a89 100644 --- a/src/accessor/grib_accessor_class_data_ccsds_packing.cc +++ b/src/accessor/grib_accessor_class_data_ccsds_packing.cc @@ -262,7 +262,8 @@ int grib_accessor_class_data_ccsds_packing_t::pack_double(grib_accessor* a, cons } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); - divisor = codes_power(-binary_scale_factor, 2); + if (err) return err; + divisor = codes_power(-binary_scale_factor, 2); size_t nbytes = (bits_per_value + 7) / 8; // ECC-1602: use native a data type (4 bytes for uint32_t) for values that require only 3 bytes diff --git a/src/accessor/grib_accessor_class_data_complex_packing.cc b/src/accessor/grib_accessor_class_data_complex_packing.cc index d3cf71a34..d946d6ae6 100644 --- a/src/accessor/grib_accessor_class_data_complex_packing.cc +++ b/src/accessor/grib_accessor_class_data_complex_packing.cc @@ -416,7 +416,6 @@ int grib_accessor_class_data_complex_packing_t::pack_double(grib_accessor* a, co return GRIB_INTERNAL_ERROR; } binary_scale_factor = grib_get_binary_scale_fact(d * max, reference_value, bits_per_value, &ret); - if (ret == GRIB_UNDERFLOW) { d = 0; binary_scale_factor = 0; diff --git a/src/accessor/grib_accessor_class_data_g1second_order_general_extended_packing.cc b/src/accessor/grib_accessor_class_data_g1second_order_general_extended_packing.cc index f78bb1806..83354c174 100644 --- a/src/accessor/grib_accessor_class_data_g1second_order_general_extended_packing.cc +++ b/src/accessor/grib_accessor_class_data_g1second_order_general_extended_packing.cc @@ -601,6 +601,9 @@ int grib_accessor_class_data_g1second_order_general_extended_packing_t::pack_dou else if (val[i] < min) min = val[i]; } + if ((ret = grib_check_data_values_minmax(handle, min, max)) != GRIB_SUCCESS) { + return ret; + } /* ECC-1219: packingType conversion from grid_ieee to grid_second_order */ if ((ret = get_bits_per_value(handle, self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS) @@ -646,6 +649,7 @@ int grib_accessor_class_data_g1second_order_general_extended_packing_t::pack_dou return GRIB_INTERNAL_ERROR; } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &ret); + if (ret != GRIB_SUCCESS) return ret; divisor = codes_power(-binary_scale_factor, 2); } diff --git a/src/accessor/grib_accessor_class_data_png_packing.cc b/src/accessor/grib_accessor_class_data_png_packing.cc index 999722f36..5f4a6701d 100644 --- a/src/accessor/grib_accessor_class_data_png_packing.cc +++ b/src/accessor/grib_accessor_class_data_png_packing.cc @@ -405,6 +405,7 @@ int grib_accessor_class_data_png_packing_t::pack_double(grib_accessor* a, const } binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err); + if (err) return err; divisor = codes_power(-binary_scale_factor, 2); #ifndef PNG_ANYBITS From d3602888df0fdc13f51a453860f9e4472eb14ca3 Mon Sep 17 00:00:00 2001 From: shahramn Date: Thu, 3 Oct 2024 13:21:31 +0100 Subject: [PATCH 37/37] ECC-1927: GRIB: grid_second_order hanging when encoding fields with Infinite values (try 3) --- examples/F90/grib_infinity_grid_second_order.f90 | 1 + examples/F90/grib_infinity_grid_second_order.sh | 7 ++++++- src/grib_scaling.cc | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/examples/F90/grib_infinity_grid_second_order.f90 b/examples/F90/grib_infinity_grid_second_order.f90 index f61e6c492..4a1939b88 100644 --- a/examples/F90/grib_infinity_grid_second_order.f90 +++ b/examples/F90/grib_infinity_grid_second_order.f90 @@ -35,6 +35,7 @@ IF (CLINFINITY == '1') THEN ZT (1) = IEEE_VALUE (0._8, IEEE_POSITIVE_INF) ENDIF +! This should fail if CLINFINITY is 1 (inf passed in) CALL codes_set_real8_array (IGRIBH, "values", ZT) END diff --git a/examples/F90/grib_infinity_grid_second_order.sh b/examples/F90/grib_infinity_grid_second_order.sh index 38c2b579e..611636ecd 100755 --- a/examples/F90/grib_infinity_grid_second_order.sh +++ b/examples/F90/grib_infinity_grid_second_order.sh @@ -8,6 +8,11 @@ # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # +# ----------------------------------------------------------------- +# This is the test for the JIRA issue ECC-1927 +# grid_second_order hangs when encoding fields with infinite values +# ----------------------------------------------------------------- + . ./include.ctest.sh for encoding in grid_simple grid_second_order; do @@ -23,7 +28,7 @@ for encoding in grid_simple grid_second_order; do if [ $infinity -eq 1 ]; then set -e if [ $c -eq 0 ]; then - echo "Encoding infinite numbers should fail" + echo "Encoding infinite numbers should have failed" exit 1 fi fi diff --git a/src/grib_scaling.cc b/src/grib_scaling.cc index c48e0159b..960e40ee3 100644 --- a/src/grib_scaling.cc +++ b/src/grib_scaling.cc @@ -27,6 +27,7 @@ long grib_get_binary_scale_fact(double max, double min, long bpval, int* error) unsigned long maxint = 0; const size_t ulong_size = sizeof(maxint) * 8; + // See ECC-1927 if ((isnan(range) || isinf(range))) { *error = GRIB_OUT_OF_RANGE; /*overflow*/ return 0;