From f1340999c2960b732929f55f63abbdd10bf9176d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 17 Jul 2013 17:08:16 +0100 Subject: [PATCH] GRIB-394:grib_filter arithmetic operators not correct for floating point values --- src/action_class_if.c | 255 ++--- src/grib_expression_class_binop.c | 101 +- src/grib_expression_class_unop.c | 69 +- src/grib_lex.c | 382 ++++---- src/grib_yacc.c | 1438 +++++++++++++++-------------- src/grib_yacc.h | 46 +- src/gribl.l | 2 + src/griby.y | 14 +- tests/filter.sh | 34 +- 9 files changed, 1204 insertions(+), 1137 deletions(-) diff --git a/src/action_class_if.c b/src/action_class_if.c index f045f3fe6..b5a4343ee 100644 --- a/src/action_class_if.c +++ b/src/action_class_if.c @@ -95,31 +95,32 @@ static void init_class(grib_action_class* c) /* END_CLASS_IMP */ grib_action* grib_action_create_if( grib_context* context, - grib_expression* expression, - grib_action* block_true,grib_action* block_false,int transient) -{ char name[1024]; - grib_action_if* a ; - grib_action_class* c = grib_action_class_if; - grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context,c->size); - act->op = grib_context_strdup_persistent(context,"section"); + grib_expression* expression, + grib_action* block_true,grib_action* block_false,int transient) +{ + char name[1024]; + grib_action_if* a ; + grib_action_class* c = grib_action_class_if; + grib_action* act = (grib_action*)grib_context_malloc_clear_persistent(context,c->size); + act->op = grib_context_strdup_persistent(context,"section"); - act->cclass = c; - a = (grib_action_if*)act; - act->context = context; + act->cclass = c; + a = (grib_action_if*)act; + act->context = context; - a->expression = expression; - a->block_true = block_true; - a->block_false = block_false; - a->transient = transient; + a->expression = expression; + a->block_true = block_true; + a->block_false = block_false; + a->transient = transient; - if (transient) - sprintf(name,"__if%p",(void*)a); - else - sprintf(name,"_if%p",(void*)a); + if (transient) + sprintf(name,"__if%p",(void*)a); + else + sprintf(name,"_if%p",(void*)a); - act->name = grib_context_strdup_persistent(context,name); + act->name = grib_context_strdup_persistent(context,name); - return act; + return act; } static void compile(grib_action* act, grib_compiler *compiler) @@ -145,157 +146,165 @@ static void compile(grib_action* act, grib_compiler *compiler) static int create_accessor( grib_section* p, grib_action* act, grib_loader *h) { - grib_action_if* a = (grib_action_if*)act; - grib_action* next = NULL; - int ret = 0; - long lres=0; + grib_action_if* a = (grib_action_if*)act; + grib_action* next = NULL; + int ret = 0; + long lres=0; - grib_accessor* as = NULL; - grib_section* gs = NULL; + grib_accessor* as = NULL; + grib_section* gs = NULL; - as = grib_accessor_factory(p, act,0,NULL); - if(!as)return GRIB_INTERNAL_ERROR; - gs = as->sub_section; - grib_push_accessor(as,p->block); + as = grib_accessor_factory(p, act,0,NULL); + if(!as)return GRIB_INTERNAL_ERROR; + gs = as->sub_section; + grib_push_accessor(as,p->block); - if ((ret=grib_expression_evaluate_long(p->h,a->expression,&lres)) != GRIB_SUCCESS) - return ret; + if ((ret=grib_expression_evaluate_long(p->h,a->expression,&lres)) != GRIB_SUCCESS) + return ret; - if(lres) - next = a->block_true; - else - next = a->block_false; + if(lres) + next = a->block_true; + else + next = a->block_false; #if 0 -if(p->h->context->debug > 1) -{ - printf("EVALUATE create_accessor_handle "); -grib_expression_print(p->h->context,a->expression,p->h); -printf(" [%d]\n", next == a->block_true); + if(p->h->context->debug > 1) + { + printf("EVALUATE create_accessor_handle "); + grib_expression_print(p->h->context,a->expression,p->h); + printf(" [%d]\n", next == a->block_true); - grib_dump_action_branch(stdout,next,5); -} + grib_dump_action_branch(stdout,next,5); + } #endif - gs->branch = next; - grib_dependency_observe_expression(as,a->expression); + gs->branch = next; + grib_dependency_observe_expression(as,a->expression); - while(next){ + while(next){ - ret = grib_create_accessor(gs, next, h); - if(ret != GRIB_SUCCESS) return ret; - next= next->next; - } + ret = grib_create_accessor(gs, next, h); + if(ret != GRIB_SUCCESS) return ret; + next= next->next; + } - return GRIB_SUCCESS; + return GRIB_SUCCESS; } static int execute(grib_action* act, grib_handle *h) { - grib_action_if* a = (grib_action_if*)act; - grib_action* next = NULL; - int ret = 0; - long lres=0; + grib_action_if* a = (grib_action_if*)act; + grib_action* next = NULL; + int ret = 0; + long lres=0; - if ((ret=grib_expression_evaluate_long(h,a->expression,&lres)) != GRIB_SUCCESS) { - if (ret == GRIB_NOT_FOUND) lres=0; + /* See GRIB-394 */ + int type = grib_expression_native_type(h, a->expression); + if (type != GRIB_TYPE_DOUBLE) { + if ((ret=grib_expression_evaluate_long(h,a->expression,&lres)) != GRIB_SUCCESS) { + if (ret == GRIB_NOT_FOUND) lres=0; + else return ret; + } + } + else { + double dres = 0.0; + ret = grib_expression_evaluate_double(h, a->expression, &dres); + lres = (long)dres; + if ( ret != GRIB_SUCCESS ) { + if (ret == GRIB_NOT_FOUND) lres=0; + else return ret; + } + } + + if(lres) + next = a->block_true; else - return ret; - } + next = a->block_false; - if(lres) - next = a->block_true; - else - next = a->block_false; + while(next){ + ret = grib_action_execute(next, h); + if(ret != GRIB_SUCCESS) return ret; + next= next->next; + } - while(next){ - - ret = grib_action_execute(next, h); - if(ret != GRIB_SUCCESS) return ret; - next= next->next; - } - - return GRIB_SUCCESS; + return GRIB_SUCCESS; } static void dump(grib_action* act, FILE* f, int lvl) { - grib_action_if* a = (grib_action_if*)act; - int i = 0; + grib_action_if* a = (grib_action_if*)act; + int i = 0; - for (i=0;icontext,f," "); + for (i=0;icontext,f," "); - printf("if(%s) { ",act->name); grib_expression_print(act->context,a->expression,0); + printf("if(%s) { ",act->name); grib_expression_print(act->context,a->expression,0); printf("\n"); - if(a->block_true){ - /* grib_context_print(act->context,f,"IF \t TODO \n"); TODO */ - grib_dump_action_branch(f,a->block_true,lvl+1); - } - if(a->block_false){ - printf("}\n"); - for (i=0;icontext,f," "); - printf("else(%s) { ",act->name); grib_expression_print(act->context,a->expression,0); - /* grib_context_print(act->context,f,"ELSE \n" );*/ - grib_dump_action_branch(f,a->block_false,lvl+1); - } - for (i=0;icontext,f," "); + if(a->block_true){ + /* grib_context_print(act->context,f,"IF \t TODO \n"); TODO */ + grib_dump_action_branch(f,a->block_true,lvl+1); + } + if(a->block_false){ + printf("}\n"); + for (i=0;icontext,f," "); + printf("else(%s) { ",act->name); grib_expression_print(act->context,a->expression,0); + /* grib_context_print(act->context,f,"ELSE \n" );*/ + grib_dump_action_branch(f,a->block_false,lvl+1); + } + for (i=0;icontext,f," "); printf("}\n"); } - static grib_action* reparse(grib_action* a,grib_accessor* acc,int* doit) { - int ret=0; - long lres=0; - grib_action_if* self = (grib_action_if*)a; + int ret=0; + long lres=0; + grib_action_if* self = (grib_action_if*)a; - /* printf("reparse %s %s\n",a->name,acc->name); */ + /* printf("reparse %s %s\n",a->name,acc->name); */ - if((ret=grib_expression_evaluate_long(acc->parent->h,self->expression,&lres)) != GRIB_SUCCESS) - grib_context_log(acc->parent->h->context, - GRIB_LOG_ERROR,"if reparse grib_expression_evaluate_long %s", - grib_get_error_message(ret)); + if((ret=grib_expression_evaluate_long(acc->parent->h,self->expression,&lres)) != GRIB_SUCCESS) + grib_context_log(acc->parent->h->context, + GRIB_LOG_ERROR,"if reparse grib_expression_evaluate_long %s", + grib_get_error_message(ret)); - if(lres) - return self->block_true; - else - return self->block_false; + if(lres) + return self->block_true; + else + return self->block_false; } static void destroy(grib_context* context,grib_action* act) { - grib_action_if* a = (grib_action_if*) act; - grib_action *t = a->block_true; - grib_action *f = a->block_false; + grib_action_if* a = (grib_action_if*) act; + grib_action *t = a->block_true; + grib_action *f = a->block_false; - while(t) - { - grib_action *nt = t->next; - grib_free_action(context,t); - t = nt; - } + while(t) + { + grib_action *nt = t->next; + grib_free_action(context,t); + t = nt; + } - while(f) - { - grib_action *nf = f->next; - grib_free_action(context,f); - f = nf; - } + while(f) + { + grib_action *nf = f->next; + grib_free_action(context,f); + f = nf; + } - grib_expression_free(context,a->expression); + grib_expression_free(context,a->expression); - grib_context_free_persistent(context, act->name); - grib_context_free_persistent(context, act->op); + grib_context_free_persistent(context, act->name); + grib_context_free_persistent(context, act->op); } static void xref(grib_action* d, FILE* f,const char* path) { } - - diff --git a/src/grib_expression_class_binop.c b/src/grib_expression_class_binop.c index 9e86df58d..7de4128ea 100644 --- a/src/grib_expression_class_binop.c +++ b/src/grib_expression_class_binop.c @@ -98,82 +98,81 @@ static void init_class(grib_expression_class* c) static int evaluate_long(grib_expression *g,grib_handle* h,long* lres) { - long v1=0; - long v2=0; - int ret; - grib_expression_binop* e = (grib_expression_binop*)g; + long v1=0; + long v2=0; + int ret; + grib_expression_binop* e = (grib_expression_binop*)g; - ret = grib_expression_evaluate_long(h,e->left,&v1); - if (ret != GRIB_SUCCESS) return ret; + ret = grib_expression_evaluate_long(h,e->left,&v1); + if (ret != GRIB_SUCCESS) return ret; - ret = grib_expression_evaluate_long(h,e->right,&v2); - if (ret != GRIB_SUCCESS) return ret; + ret = grib_expression_evaluate_long(h,e->right,&v2); + if (ret != GRIB_SUCCESS) return ret; - *lres=e->long_func(v1,v2); - return GRIB_SUCCESS; + *lres=e->long_func(v1,v2); + return GRIB_SUCCESS; } static int evaluate_double(grib_expression *g,grib_handle* h,double* dres) { - double v1=0.0; - double v2=0.0; - int ret; + double v1=0.0; + double v2=0.0; + int ret; - grib_expression_binop* e = (grib_expression_binop*)g; + grib_expression_binop* e = (grib_expression_binop*)g; - ret = grib_expression_evaluate_double(h,e->left,&v1); - if (ret != GRIB_SUCCESS) return ret; + ret = grib_expression_evaluate_double(h,e->left,&v1); + if (ret != GRIB_SUCCESS) return ret; - ret = grib_expression_evaluate_double(h,e->right,&v2); - if (ret != GRIB_SUCCESS) return ret; + ret = grib_expression_evaluate_double(h,e->right,&v2); + if (ret != GRIB_SUCCESS) return ret; - *dres = e->double_func ? e->double_func(v1,v2) : e->long_func(v1,v2); - - return GRIB_SUCCESS; + *dres = e->double_func ? e->double_func(v1,v2) : e->long_func(v1,v2); + return GRIB_SUCCESS; } static void print(grib_context* c,grib_expression* g,grib_handle* f) { - grib_expression_binop* e = (grib_expression_binop*)g; - printf("binop("); - grib_expression_print(c,e->left,f); - printf(","); - grib_expression_print(c,e->right,f); - printf(")"); + grib_expression_binop* e = (grib_expression_binop*)g; + printf("binop("); + grib_expression_print(c,e->left,f); + printf(","); + grib_expression_print(c,e->right,f); + printf(")"); } static void destroy(grib_context* c,grib_expression* g) { - grib_expression_binop* e = (grib_expression_binop*)g; - grib_expression_free(c,e->left); - grib_expression_free(c,e->right); + grib_expression_binop* e = (grib_expression_binop*)g; + grib_expression_free(c,e->left); + grib_expression_free(c,e->right); } - -static void add_dependency(grib_expression* g, grib_accessor* observer){ - grib_expression_binop* e = (grib_expression_binop*)g; - grib_dependency_observe_expression(observer,e->left); - grib_dependency_observe_expression(observer,e->right); +static void add_dependency(grib_expression* g, grib_accessor* observer) +{ + grib_expression_binop* e = (grib_expression_binop*)g; + grib_dependency_observe_expression(observer,e->left); + grib_dependency_observe_expression(observer,e->right); } grib_expression* new_binop_expression(grib_context* c, - grib_binop_long_proc long_func, - grib_binop_double_proc double_func, - grib_expression* left,grib_expression* right) + grib_binop_long_proc long_func, + grib_binop_double_proc double_func, + grib_expression* left,grib_expression* right) { - grib_expression_binop* e = grib_context_malloc_clear_persistent(c,sizeof(grib_expression_binop)); - e->base.cclass = grib_expression_class_binop; - e->left = left; - e->right = right; - e->long_func = long_func; - e->double_func = double_func; - return (grib_expression*)e; + grib_expression_binop* e = grib_context_malloc_clear_persistent(c,sizeof(grib_expression_binop)); + e->base.cclass = grib_expression_class_binop; + e->left = left; + e->right = right; + e->long_func = long_func; + e->double_func = double_func; + return (grib_expression*)e; } static void compile(grib_expression* g,grib_compiler* c) { - grib_expression_binop* e = (grib_expression_binop*)g; + grib_expression_binop* e = (grib_expression_binop*)g; fprintf(c->out,"new_binop_expression(ctx,"); fprintf(c->out,"%s,",grib_binop_long_proc_name(e->long_func)); fprintf(c->out,"%s,",grib_binop_double_proc_name(e->double_func)); @@ -185,6 +184,12 @@ static void compile(grib_expression* g,grib_compiler* c) static int native_type(grib_expression* g,grib_handle *h) { - grib_expression_binop* e = (grib_expression_binop*)g; - return e->double_func ? GRIB_TYPE_LONG : GRIB_TYPE_DOUBLE; + grib_expression_binop* e = (grib_expression_binop*)g; + /* See GRIB-394 : The type of this binary expression will be double if any of its operands are double */ + if (grib_expression_native_type(h, e->left) == GRIB_TYPE_DOUBLE || + grib_expression_native_type(h, e->right) == GRIB_TYPE_DOUBLE) + { + return GRIB_TYPE_DOUBLE; + } + return e->double_func ? GRIB_TYPE_LONG : GRIB_TYPE_DOUBLE; } diff --git a/src/grib_expression_class_unop.c b/src/grib_expression_class_unop.c index c7ca81a95..3cf7baf16 100644 --- a/src/grib_expression_class_unop.c +++ b/src/grib_expression_class_unop.c @@ -94,63 +94,63 @@ static void init_class(grib_expression_class* c) static int evaluate_long(grib_expression* g,grib_handle* h,long* lres) { - int ret; - long v=0; - grib_expression_unop* e = (grib_expression_unop*)g; - ret = grib_expression_evaluate_long(h,e->exp,&v); - if (ret != GRIB_SUCCESS) return ret; - *lres=e->long_func(v); - return GRIB_SUCCESS; + int ret; + long v=0; + grib_expression_unop* e = (grib_expression_unop*)g; + ret = grib_expression_evaluate_long(h,e->exp,&v); + if (ret != GRIB_SUCCESS) return ret; + *lres=e->long_func(v); + return GRIB_SUCCESS; } static int evaluate_double(grib_expression* g,grib_handle* h,double* dres) { - int ret; - double v=0; - grib_expression_unop* e = (grib_expression_unop*)g; - ret = grib_expression_evaluate_double(h,e->exp,&v); - if (ret != GRIB_SUCCESS) return ret; - *dres = e->double_func ? e->double_func(v) : e->long_func(v); - return GRIB_SUCCESS; + int ret; + double v=0; + grib_expression_unop* e = (grib_expression_unop*)g; + ret = grib_expression_evaluate_double(h,e->exp,&v); + if (ret != GRIB_SUCCESS) return ret; + *dres = e->double_func ? e->double_func(v) : e->long_func(v); + return GRIB_SUCCESS; } static void print(grib_context* c,grib_expression* g,grib_handle* f) { - grib_expression_unop* e = (grib_expression_unop*)g; - printf("unop("); - grib_expression_print(c,e->exp,f); - printf(")"); + grib_expression_unop* e = (grib_expression_unop*)g; + printf("unop("); + grib_expression_print(c,e->exp,f); + printf(")"); } static void destroy(grib_context* c,grib_expression* g) { - grib_expression_unop* e = (grib_expression_unop*)g; - grib_expression_free(c,e->exp); + grib_expression_unop* e = (grib_expression_unop*)g; + grib_expression_free(c,e->exp); } static void add_dependency(grib_expression* g, grib_accessor* observer){ - grib_expression_unop* e = (grib_expression_unop*)g; - grib_dependency_observe_expression(observer,e->exp); + grib_expression_unop* e = (grib_expression_unop*)g; + grib_dependency_observe_expression(observer,e->exp); } grib_expression* new_unop_expression(grib_context* c, - grib_unop_long_proc long_func, - grib_unop_double_proc double_func, - grib_expression* exp) + grib_unop_long_proc long_func, + grib_unop_double_proc double_func, + grib_expression* exp) { - grib_expression_unop* e = grib_context_malloc_clear_persistent(c,sizeof(grib_expression_unop)); - e->base.cclass = grib_expression_class_unop; - e->exp = exp; - e->long_func = long_func; - e->double_func = double_func; - return (grib_expression*)e; + grib_expression_unop* e = grib_context_malloc_clear_persistent(c,sizeof(grib_expression_unop)); + e->base.cclass = grib_expression_class_unop; + e->exp = exp; + e->long_func = long_func; + e->double_func = double_func; + return (grib_expression*)e; } static void compile(grib_expression* g,grib_compiler* c) { - grib_expression_unop* e = (grib_expression_unop*)g; + grib_expression_unop* e = (grib_expression_unop*)g; fprintf(c->out,"new_unop_expression(ctx,"); fprintf(c->out,"%s,",grib_unop_long_proc_name(e->long_func)); fprintf(c->out,"%s,",grib_unop_double_proc_name(e->double_func)); @@ -160,7 +160,6 @@ static void compile(grib_expression* g,grib_compiler* c) static int native_type(grib_expression* g,grib_handle *h) { - grib_expression_unop* e = (grib_expression_unop*)g; - return e->double_func ? GRIB_TYPE_LONG : GRIB_TYPE_DOUBLE; + grib_expression_unop* e = (grib_expression_unop*)g; + return e->double_func ? GRIB_TYPE_DOUBLE : GRIB_TYPE_LONG; } - diff --git a/src/grib_lex.c b/src/grib_lex.c index 4dd23f8e4..d989751dd 100644 --- a/src/grib_lex.c +++ b/src/grib_lex.c @@ -359,8 +359,8 @@ static void grib_yy_fatal_error (grib_yyconst char msg[] ); *grib_yy_cp = '\0'; \ (grib_yy_c_buf_p) = grib_yy_cp; -#define YY_NUM_RULES 100 -#define YY_END_OF_BUFFER 101 +#define YY_NUM_RULES 102 +#define YY_END_OF_BUFFER 103 /* This struct is not used in this scanner, but its presence is necessary. */ struct grib_yy_trans_info @@ -370,62 +370,62 @@ struct grib_yy_trans_info }; static grib_yyconst flex_int16_t grib_yy_accept[507] = { 0, - 97, 97, 101, 99, 97, 98, 10, 91, 96, 99, - 99, 94, 99, 99, 99, 93, 93, 93, 92, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 99, - 16, 97, 4, 12, 0, 0, 94, 3, 5, 1, - 2, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 18, 93, 8, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 13, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 99, 99, 103, 101, 99, 100, 12, 93, 98, 101, + 101, 96, 5, 101, 3, 95, 95, 95, 94, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 101, + 18, 99, 6, 14, 0, 0, 96, 4, 7, 1, + 2, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 20, 95, 10, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 15, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 93, 93, 93, 93, 93, 93, 14, 95, 93, 19, - 93, 11, 93, 93, 93, 6, 55, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 30, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 9, 93, 93, 43, 93, 93, 93, 93, 93, 78, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 0, 93, 93, 93, 93, 93, 23, 93, - 81, 93, 93, 93, 93, 93, 93, 70, 93, 20, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 95, 95, 95, 95, 95, 95, 16, 97, 95, 21, + 95, 13, 95, 95, 95, 8, 57, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 32, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 11, 95, 95, 45, 95, 95, 95, 95, 95, 80, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 0, 95, 95, 95, 95, 95, 25, 95, + 83, 95, 95, 95, 95, 95, 95, 72, 95, 22, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 93, 56, 93, 93, 25, 93, 93, 93, 93, 39, - 93, 93, 93, 93, 93, 15, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 89, 93, 93, 93, 93, - 93, 93, 93, 80, 93, 93, 0, 95, 93, 46, - 93, 22, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 37, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 24, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 41, 93, 88, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 26, 86, 93, 87, 66, 93, 93, 93, 93, + 95, 58, 95, 95, 27, 95, 95, 95, 95, 41, + 95, 95, 95, 95, 95, 17, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 91, 95, 95, 95, 95, + 95, 95, 95, 82, 95, 95, 0, 97, 95, 48, + 95, 24, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 39, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 26, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 43, 95, 90, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 28, 88, 95, 89, 68, 95, 95, 95, 95, - 93, 93, 93, 93, 93, 63, 93, 93, 93, 93, - 35, 72, 93, 93, 93, 93, 93, 65, 93, 38, - 93, 93, 59, 93, 93, 93, 7, 93, 93, 93, - 93, 93, 64, 93, 93, 33, 93, 82, 93, 93, - 93, 93, 93, 74, 93, 93, 93, 84, 93, 93, - 77, 83, 93, 57, 93, 93, 93, 93, 93, 90, - 93, 93, 93, 93, 45, 54, 68, 71, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 29, 47, - 93, 93, 93, 93, 93, 49, 93, 93, 93, 93, - 93, 31, 93, 53, 93, 93, 93, 76, 93, 93, + 95, 95, 95, 95, 95, 65, 95, 95, 95, 95, + 37, 74, 95, 95, 95, 95, 95, 67, 95, 40, + 95, 95, 61, 95, 95, 95, 9, 95, 95, 95, + 95, 95, 66, 95, 95, 35, 95, 84, 95, 95, + 95, 95, 95, 76, 95, 95, 95, 86, 95, 95, + 79, 85, 95, 59, 95, 95, 95, 95, 95, 92, + 95, 95, 95, 95, 47, 56, 70, 73, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 31, 49, + 95, 95, 95, 95, 95, 51, 95, 95, 95, 95, + 95, 33, 95, 55, 95, 95, 95, 78, 95, 95, - 48, 93, 93, 93, 93, 27, 93, 21, 93, 34, - 93, 93, 93, 93, 93, 93, 93, 32, 93, 52, - 17, 40, 93, 67, 93, 93, 93, 93, 50, 93, - 93, 93, 75, 93, 93, 93, 93, 93, 93, 93, - 79, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 58, 93, 93, 51, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 42, 93, 93, 73, 93, 85, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 44, - 28, 93, 69, 93, 93, 93, 36, 93, 61, 93, + 50, 95, 95, 95, 95, 29, 95, 23, 95, 36, + 95, 95, 95, 95, 95, 95, 95, 34, 95, 54, + 19, 42, 95, 69, 95, 95, 95, 95, 52, 95, + 95, 95, 77, 95, 95, 95, 95, 95, 95, 95, + 81, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 60, 95, 95, 53, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 44, 95, 95, 75, 95, 87, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 46, + 30, 95, 71, 95, 95, 95, 38, 95, 63, 95, - 93, 62, 93, 93, 60, 0 + 95, 64, 95, 95, 62, 0 } ; static grib_yyconst flex_int32_t grib_yy_ec[256] = @@ -1398,167 +1398,167 @@ return GE ; case 3: YY_RULE_SETUP #line 62 "gribl.l" -return LE ; +return GT ; YY_BREAK case 4: YY_RULE_SETUP #line 63 "gribl.l" -return NE ; +return LE ; YY_BREAK case 5: YY_RULE_SETUP #line 64 "gribl.l" -return NE ; +return LT ; YY_BREAK case 6: YY_RULE_SETUP #line 65 "gribl.l" -return BIT ; +return NE ; YY_BREAK case 7: YY_RULE_SETUP #line 66 "gribl.l" -return BITOFF ; +return NE ; YY_BREAK case 8: YY_RULE_SETUP -#line 68 "gribl.l" -return IS ; +#line 67 "gribl.l" +return BIT ; YY_BREAK case 9: YY_RULE_SETUP -#line 69 "gribl.l" -return NOT ; +#line 68 "gribl.l" +return BITOFF ; YY_BREAK case 10: YY_RULE_SETUP #line 70 "gribl.l" -return NOT ; +return IS ; YY_BREAK case 11: YY_RULE_SETUP #line 71 "gribl.l" -return AND ; +return NOT ; YY_BREAK case 12: YY_RULE_SETUP #line 72 "gribl.l" -return AND ; +return NOT ; YY_BREAK case 13: YY_RULE_SETUP #line 73 "gribl.l" -return OR ; +return AND ; YY_BREAK case 14: YY_RULE_SETUP #line 74 "gribl.l" -return OR ; +return AND ; YY_BREAK case 15: YY_RULE_SETUP -#line 76 "gribl.l" -return NIL ; +#line 75 "gribl.l" +return OR ; YY_BREAK case 16: YY_RULE_SETUP -#line 77 "gribl.l" -return DUMMY ; +#line 76 "gribl.l" +return OR ; YY_BREAK case 17: YY_RULE_SETUP -#line 79 "gribl.l" -return LOWERCASE; +#line 78 "gribl.l" +return NIL ; YY_BREAK case 18: YY_RULE_SETUP -#line 80 "gribl.l" -return IF ; +#line 79 "gribl.l" +return DUMMY ; YY_BREAK case 19: YY_RULE_SETUP #line 81 "gribl.l" -return IF_TRANSIENT ; +return LOWERCASE; YY_BREAK case 20: YY_RULE_SETUP #line 82 "gribl.l" -return ELSE ; +return IF ; YY_BREAK case 21: YY_RULE_SETUP #line 83 "gribl.l" -return UNSIGNED ; +return IF_TRANSIENT ; YY_BREAK case 22: YY_RULE_SETUP #line 84 "gribl.l" -return ASCII ; +return ELSE ; YY_BREAK case 23: YY_RULE_SETUP #line 85 "gribl.l" -return BYTE ; +return UNSIGNED ; YY_BREAK case 24: YY_RULE_SETUP #line 86 "gribl.l" -return LABEL ; +return ASCII ; YY_BREAK case 25: YY_RULE_SETUP #line 87 "gribl.l" -return LIST ; +return BYTE ; YY_BREAK case 26: YY_RULE_SETUP #line 88 "gribl.l" -return WHILE ; +return LABEL ; YY_BREAK case 27: YY_RULE_SETUP #line 89 "gribl.l" -return TEMPLATE ; +return LIST ; YY_BREAK case 28: YY_RULE_SETUP #line 90 "gribl.l" -return TEMPLATE_NOFAIL ; +return WHILE ; YY_BREAK case 29: YY_RULE_SETUP #line 91 "gribl.l" -return TRIGGER ; +return TEMPLATE ; YY_BREAK case 30: YY_RULE_SETUP #line 92 "gribl.l" -return END ; +return TEMPLATE_NOFAIL ; YY_BREAK case 31: YY_RULE_SETUP #line 93 "gribl.l" -return IBMFLOAT ; +return TRIGGER ; YY_BREAK case 32: YY_RULE_SETUP #line 94 "gribl.l" -return FLOAT ; +return END ; YY_BREAK case 33: YY_RULE_SETUP #line 95 "gribl.l" -return SIGNED ; +return IBMFLOAT ; YY_BREAK case 34: YY_RULE_SETUP #line 96 "gribl.l" -return CODETABLE; +return FLOAT ; YY_BREAK case 35: YY_RULE_SETUP #line 97 "gribl.l" -return GETENV; +return SIGNED ; YY_BREAK case 36: YY_RULE_SETUP @@ -1568,271 +1568,281 @@ return CODETABLE; case 37: YY_RULE_SETUP #line 99 "gribl.l" -return FLAG ; +return GETENV; YY_BREAK case 38: YY_RULE_SETUP #line 100 "gribl.l" -return LOOKUP ; +return CODETABLE; YY_BREAK case 39: YY_RULE_SETUP #line 101 "gribl.l" -return META ; +return FLAG ; YY_BREAK case 40: YY_RULE_SETUP #line 102 "gribl.l" -return PADTOEVEN ; +return LOOKUP ; YY_BREAK case 41: YY_RULE_SETUP #line 103 "gribl.l" -return PADTO ; +return META ; YY_BREAK case 42: YY_RULE_SETUP #line 104 "gribl.l" -return PADTOMULTIPLE ; +return PADTOEVEN ; YY_BREAK case 43: YY_RULE_SETUP #line 105 "gribl.l" -return PAD ; +return PADTO ; YY_BREAK case 44: YY_RULE_SETUP #line 106 "gribl.l" -return SECTION_PADDING ; +return PADTOMULTIPLE ; YY_BREAK case 45: YY_RULE_SETUP #line 107 "gribl.l" -return MESSAGE ; +return PAD ; YY_BREAK case 46: YY_RULE_SETUP #line 108 "gribl.l" -return ALIAS ; +return SECTION_PADDING ; YY_BREAK case 47: YY_RULE_SETUP #line 109 "gribl.l" -return UNALIAS ; +return MESSAGE ; YY_BREAK case 48: YY_RULE_SETUP #line 110 "gribl.l" -return POS ; +return ALIAS ; YY_BREAK case 49: YY_RULE_SETUP #line 111 "gribl.l" -return INTCONST ; +return UNALIAS ; YY_BREAK case 50: YY_RULE_SETUP #line 112 "gribl.l" -return TRANS ; +return POS ; YY_BREAK case 51: YY_RULE_SETUP #line 113 "gribl.l" -return STRING_TYPE ; +return INTCONST ; YY_BREAK case 52: YY_RULE_SETUP #line 114 "gribl.l" -return LONG_TYPE ; +return TRANS ; YY_BREAK case 53: YY_RULE_SETUP #line 115 "gribl.l" -return ITERATOR ; +return STRING_TYPE ; YY_BREAK case 54: YY_RULE_SETUP #line 116 "gribl.l" -return NEAREST ; +return LONG_TYPE ; YY_BREAK case 55: YY_RULE_SETUP #line 117 "gribl.l" -return BOX ; +return ITERATOR ; YY_BREAK case 56: YY_RULE_SETUP #line 118 "gribl.l" -return KSEC ; +return NEAREST ; YY_BREAK case 57: YY_RULE_SETUP #line 119 "gribl.l" -return FLAGBIT ; +return BOX ; YY_BREAK case 58: YY_RULE_SETUP #line 120 "gribl.l" -return KSEC1EXPVER ; +return KSEC ; YY_BREAK case 59: YY_RULE_SETUP #line 121 "gribl.l" -return MODIFY ; +return FLAGBIT ; YY_BREAK case 60: YY_RULE_SETUP -#line 123 "gribl.l" -return G1_HALF_BYTE ; +#line 122 "gribl.l" +return KSEC1EXPVER ; YY_BREAK case 61: YY_RULE_SETUP -#line 124 "gribl.l" -return G1_MESSAGE_LENGTH ; +#line 123 "gribl.l" +return MODIFY ; YY_BREAK case 62: YY_RULE_SETUP #line 125 "gribl.l" -return G1_SECTION4_LENGTH ; +return G1_HALF_BYTE ; YY_BREAK case 63: YY_RULE_SETUP -#line 127 "gribl.l" -return EXPORT; +#line 126 "gribl.l" +return G1_MESSAGE_LENGTH ; YY_BREAK case 64: YY_RULE_SETUP -#line 128 "gribl.l" -return REMOVE; +#line 127 "gribl.l" +return G1_SECTION4_LENGTH ; YY_BREAK case 65: YY_RULE_SETUP -#line 130 "gribl.l" -return SECTION_LENGTH ; +#line 129 "gribl.l" +return EXPORT; YY_BREAK case 66: YY_RULE_SETUP -#line 132 "gribl.l" -return ASSERT ; +#line 130 "gribl.l" +return REMOVE; YY_BREAK case 67: YY_RULE_SETUP -#line 134 "gribl.l" -return READ_ONLY; +#line 132 "gribl.l" +return SECTION_LENGTH ; YY_BREAK case 68: YY_RULE_SETUP -#line 135 "gribl.l" -return NO_COPY; +#line 134 "gribl.l" +return ASSERT ; YY_BREAK case 69: YY_RULE_SETUP #line 136 "gribl.l" -return EDITION_SPECIFIC; +return READ_ONLY; YY_BREAK case 70: YY_RULE_SETUP #line 137 "gribl.l" -return DUMP; +return NO_COPY; YY_BREAK case 71: YY_RULE_SETUP #line 138 "gribl.l" -return NO_FAIL; +return EDITION_SPECIFIC; YY_BREAK case 72: YY_RULE_SETUP #line 139 "gribl.l" -return HIDDEN; +return DUMP; YY_BREAK case 73: YY_RULE_SETUP #line 140 "gribl.l" -return CAN_BE_MISSING; +return NO_FAIL; YY_BREAK case 74: YY_RULE_SETUP #line 141 "gribl.l" -return MISSING; +return HIDDEN; YY_BREAK case 75: YY_RULE_SETUP #line 142 "gribl.l" -return CONSTRAINT; +return CAN_BE_MISSING; YY_BREAK case 76: YY_RULE_SETUP #line 143 "gribl.l" -return OVERRIDE; +return MISSING; YY_BREAK case 77: YY_RULE_SETUP #line 144 "gribl.l" -return COPY_OK; +return CONSTRAINT; YY_BREAK case 78: YY_RULE_SETUP -#line 146 "gribl.l" -return SET; +#line 145 "gribl.l" +return OVERRIDE; YY_BREAK case 79: YY_RULE_SETUP -#line 147 "gribl.l" -return SET_NOFAIL; +#line 146 "gribl.l" +return COPY_OK; YY_BREAK case 80: YY_RULE_SETUP #line 148 "gribl.l" -return WHEN; +return SET; YY_BREAK case 81: YY_RULE_SETUP #line 149 "gribl.l" -return CASE; +return SET_NOFAIL; YY_BREAK case 82: YY_RULE_SETUP #line 150 "gribl.l" -return SWITCH; +return WHEN; YY_BREAK case 83: YY_RULE_SETUP #line 151 "gribl.l" -return DEFAULT; +return CASE; YY_BREAK case 84: YY_RULE_SETUP #line 152 "gribl.l" -return CONCEPT; +return SWITCH; YY_BREAK case 85: YY_RULE_SETUP #line 153 "gribl.l" -return CONCEPT_NOFAIL; +return DEFAULT; YY_BREAK case 86: YY_RULE_SETUP #line 154 "gribl.l" -return WRITE; +return CONCEPT; YY_BREAK case 87: YY_RULE_SETUP #line 155 "gribl.l" -return APPEND; +return CONCEPT_NOFAIL; YY_BREAK case 88: YY_RULE_SETUP #line 156 "gribl.l" -return PRINT; +return WRITE; YY_BREAK case 89: YY_RULE_SETUP #line 157 "gribl.l" -return SKIP; +return APPEND; YY_BREAK case 90: YY_RULE_SETUP +#line 158 "gribl.l" +return PRINT; + YY_BREAK +case 91: +YY_RULE_SETUP #line 159 "gribl.l" +return SKIP; + YY_BREAK +case 92: +YY_RULE_SETUP +#line 161 "gribl.l" { int c,q; while((c = input()) && isspace(c) && c != '\n') ; @@ -1850,9 +1860,9 @@ YY_RULE_SETUP grib_parser_include(grib_yytext); } YY_BREAK -case 91: +case 93: YY_RULE_SETUP -#line 176 "gribl.l" +#line 178 "gribl.l" { int c,q = grib_yytext[0]; @@ -1869,9 +1879,9 @@ YY_RULE_SETUP return STRING; } YY_BREAK -case 92: +case 94: YY_RULE_SETUP -#line 192 "gribl.l" +#line 194 "gribl.l" { int c; unsigned long val = 0; @@ -1885,24 +1895,24 @@ YY_RULE_SETUP return INTEGER; } YY_BREAK -case 93: -YY_RULE_SETUP -#line 206 "gribl.l" -{ grib_yylval.str = strdup(grib_yytext); return IDENT; } - YY_BREAK -case 94: -YY_RULE_SETUP -#line 207 "gribl.l" -{ grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; } - YY_BREAK case 95: YY_RULE_SETUP #line 208 "gribl.l" -{ grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; } +{ grib_yylval.str = strdup(grib_yytext); return IDENT; } YY_BREAK case 96: YY_RULE_SETUP -#line 211 "gribl.l" +#line 209 "gribl.l" +{ grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 210 "gribl.l" +{ grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 213 "gribl.l" { int c; while((c = input()) && (c != '\n')){} @@ -1910,28 +1920,28 @@ YY_RULE_SETUP grib_yylineno++; } YY_BREAK -case 97: -YY_RULE_SETUP -#line 217 "gribl.l" -; - YY_BREAK -case 98: -/* rule 98 can match eol */ -YY_RULE_SETUP -#line 218 "gribl.l" -grib_yylineno++; - YY_BREAK case 99: YY_RULE_SETUP -#line 222 "gribl.l" -return *grib_yytext; +#line 219 "gribl.l" +; YY_BREAK case 100: +/* rule 100 can match eol */ +YY_RULE_SETUP +#line 220 "gribl.l" +grib_yylineno++; + YY_BREAK +case 101: YY_RULE_SETUP #line 224 "gribl.l" +return *grib_yytext; + YY_BREAK +case 102: +YY_RULE_SETUP +#line 226 "gribl.l" ECHO; YY_BREAK -#line 1935 "lex.grib_yy.c" +#line 1945 "lex.grib_yy.c" case YY_STATE_EOF(INITIAL): grib_yyterminate(); @@ -2929,7 +2939,7 @@ void grib_yyfree (void * ptr ) #define YYTABLES_NAME "grib_yytables" -#line 224 "gribl.l" +#line 226 "gribl.l" diff --git a/src/grib_yacc.c b/src/grib_yacc.c index 3e270fb6f..315ba81f2 100644 --- a/src/grib_yacc.c +++ b/src/grib_yacc.c @@ -197,16 +197,18 @@ static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_va NE = 333, GE = 334, LE = 335, - BIT = 336, - BITOFF = 337, - AND = 338, - OR = 339, - NOT = 340, - IS = 341, - IDENT = 342, - STRING = 343, - INTEGER = 344, - FLOAT = 345 + LT = 336, + GT = 337, + BIT = 338, + BITOFF = 339, + AND = 340, + OR = 341, + NOT = 342, + IS = 343, + IDENT = 344, + STRING = 345, + INTEGER = 346, + FLOAT = 347 }; #endif /* Tokens. */ @@ -288,16 +290,18 @@ static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_va #define NE 333 #define GE 334 #define LE 335 -#define BIT 336 -#define BITOFF 337 -#define AND 338 -#define OR 339 -#define NOT 340 -#define IS 341 -#define IDENT 342 -#define STRING 343 -#define INTEGER 344 -#define FLOAT 345 +#define LT 336 +#define GT 337 +#define BIT 338 +#define BITOFF 339 +#define AND 340 +#define OR 341 +#define NOT 342 +#define IS 343 +#define IDENT 344 +#define STRING 345 +#define INTEGER 346 +#define FLOAT 347 @@ -326,7 +330,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 330 "y.tab.c" +#line 334 "y.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -338,7 +342,7 @@ typedef union YYSTYPE /* Line 264 of yacc.c */ -#line 342 "y.tab.c" +#line 346 "y.tab.c" #ifdef short # undef short @@ -553,7 +557,7 @@ union grib_yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 162 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1390 +#define YYLAST 1400 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 110 @@ -566,7 +570,7 @@ union grib_yyalloc /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 345 +#define YYMAXUTOK 347 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? grib_yytranslate[YYX] : YYUNDEFTOK) @@ -577,16 +581,16 @@ static const grib_yytype_uint8 grib_yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 106, 2, 2, - 95, 96, 104, 107, 91, 102, 98, 105, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 101, 92, - 109, 97, 108, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 108, 2, 2, + 97, 98, 106, 109, 93, 104, 100, 107, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 103, 94, + 2, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 93, 2, 94, 103, 2, 2, 2, 2, 2, + 2, 95, 2, 96, 105, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 99, 2, 100, 2, 2, 2, 2, + 2, 2, 2, 101, 2, 102, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -608,7 +612,7 @@ static const grib_yytype_uint8 grib_yytranslate[] = 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90 + 85, 86, 87, 88, 89, 90, 91, 92 }; #if YYDEBUG @@ -644,146 +648,146 @@ static const grib_yytype_uint16 grib_yyprhs[] = static const grib_yytype_int16 grib_yyrhs[] = { 111, 0, -1, 112, -1, 133, -1, 114, -1, 154, - -1, 1, -1, -1, 90, -1, 113, 91, 90, -1, - 89, -1, 113, 91, 89, -1, 115, -1, 115, 114, - -1, 115, 92, 114, -1, 115, 92, -1, 120, 92, + -1, 1, -1, -1, 92, -1, 113, 93, 92, -1, + 91, -1, 113, 93, 91, -1, 115, -1, 115, 114, + -1, 115, 94, 114, -1, 115, 94, -1, 120, 94, -1, 121, -1, 129, -1, 130, -1, 131, -1, 132, - -1, 122, -1, 136, -1, 92, -1, 116, 92, -1, - 112, -1, 118, -1, 119, -1, 119, 91, 118, -1, - 148, -1, 8, 93, 89, 94, 87, 125, 126, -1, - 8, 93, 89, 94, 87, 93, 117, 94, 125, 126, - -1, 8, 95, 89, 96, 87, 125, 126, -1, 8, - 95, 89, 96, 87, 93, 117, 94, 125, 126, -1, - 12, 93, 89, 94, 87, 125, 126, -1, 12, 93, - 89, 94, 88, 125, 126, -1, 19, 93, 89, 94, - 87, 125, 126, -1, 19, 93, 89, 94, 87, 93, - 117, 94, 125, 126, -1, 13, 93, 89, 94, 87, - 125, 126, -1, 18, 93, 89, 94, 87, 125, 126, - -1, 18, 93, 89, 94, 87, 93, 117, 94, 125, - 126, -1, 18, 95, 89, 96, 87, 125, 126, -1, - 18, 95, 89, 96, 87, 93, 117, 94, 125, 126, - -1, 20, 93, 89, 94, 87, 119, 125, 126, -1, - 20, 93, 89, 94, 87, 119, 125, 50, 95, 87, - 96, 126, -1, 20, 93, 89, 94, 87, 95, 117, - 96, 125, 126, -1, 87, 97, 31, 95, 117, 96, - 125, 126, -1, 21, 93, 89, 94, 87, 119, 125, - 126, -1, 21, 93, 89, 94, 87, 95, 117, 96, - 125, 126, -1, 68, 93, 89, 94, 87, 119, 125, - 126, -1, 22, 93, 89, 94, 87, 95, 117, 96, - 126, -1, 29, 87, 95, 117, 96, 125, 126, -1, - 14, 87, -1, 14, 88, -1, 17, 87, 125, 126, - -1, 17, 87, 98, 87, 125, 126, -1, 17, 87, - 93, 119, 94, 125, 126, -1, 26, 87, -1, 27, - 87, 97, 119, 126, -1, 28, 87, 97, 119, 126, - -1, 90, 87, 125, 126, -1, 90, 87, 98, 87, - 125, 126, -1, 90, 87, 93, 119, 94, 125, 126, - -1, 64, 87, -1, 67, 93, 89, 94, 87, -1, - 65, 93, 89, 94, 87, 95, 117, 96, -1, 66, - 93, 89, 94, 87, 95, 117, 96, -1, 72, 87, - 119, -1, 58, 87, 95, 117, 96, -1, 61, 87, - 95, 117, 96, -1, 62, 87, 95, 117, 96, -1, - 63, 87, 95, 117, 96, -1, 60, 93, 89, 94, - 87, 126, -1, 59, 87, 126, -1, 9, 87, 88, - -1, 10, 87, 88, -1, 23, 87, 97, 87, 126, - -1, 24, 87, -1, 23, 87, 98, 87, 97, 87, - 126, -1, 24, 87, 98, 87, -1, 25, 87, 87, - 95, 117, 96, 125, 126, -1, 25, 87, 98, 87, - 87, 95, 117, 96, 125, 126, -1, 69, 87, 95, - 117, 96, -1, 70, 87, 95, 117, 96, -1, 71, - 87, 95, 117, 96, -1, 55, 87, 95, 117, 96, - -1, 56, 117, -1, 73, 95, 148, 96, -1, 35, - 87, 126, -1, 50, 87, 97, 46, -1, 50, 87, - 97, 148, -1, 50, 87, 97, 99, 113, 100, -1, - 51, 87, 97, 148, -1, 52, 88, -1, 52, -1, - 52, 95, 89, 96, 88, -1, 52, 95, 89, 96, - -1, 53, 88, -1, 53, -1, 53, 95, 89, 96, - 88, -1, 53, 95, 89, 96, -1, 54, 88, -1, - 54, 95, 88, 96, 88, -1, 54, -1, 4, 95, - 148, 96, 99, 114, 100, -1, 4, 95, 148, 96, - 99, 114, 100, 6, 99, 114, 100, -1, 5, 95, - 148, 96, 99, 114, 100, -1, 5, 95, 148, 96, - 99, 114, 100, 6, 99, 114, 100, -1, 49, 95, - 148, 96, 123, 116, -1, 49, 95, 148, 96, 99, - 124, 100, -1, 49, 95, 148, 96, 99, 124, 100, - 6, 99, 124, 100, -1, 50, 87, 97, 148, -1, - 51, 87, 97, 148, -1, 123, 116, -1, 124, 123, - 116, -1, 112, -1, 97, 117, -1, 112, -1, 101, - 127, -1, 128, -1, 127, 91, 128, -1, 36, -1, + -1, 122, -1, 136, -1, 94, -1, 116, 94, -1, + 112, -1, 118, -1, 119, -1, 119, 93, 118, -1, + 148, -1, 8, 95, 91, 96, 89, 125, 126, -1, + 8, 95, 91, 96, 89, 95, 117, 96, 125, 126, + -1, 8, 97, 91, 98, 89, 125, 126, -1, 8, + 97, 91, 98, 89, 95, 117, 96, 125, 126, -1, + 12, 95, 91, 96, 89, 125, 126, -1, 12, 95, + 91, 96, 90, 125, 126, -1, 19, 95, 91, 96, + 89, 125, 126, -1, 19, 95, 91, 96, 89, 95, + 117, 96, 125, 126, -1, 13, 95, 91, 96, 89, + 125, 126, -1, 18, 95, 91, 96, 89, 125, 126, + -1, 18, 95, 91, 96, 89, 95, 117, 96, 125, + 126, -1, 18, 97, 91, 98, 89, 125, 126, -1, + 18, 97, 91, 98, 89, 95, 117, 96, 125, 126, + -1, 20, 95, 91, 96, 89, 119, 125, 126, -1, + 20, 95, 91, 96, 89, 119, 125, 50, 97, 89, + 98, 126, -1, 20, 95, 91, 96, 89, 97, 117, + 98, 125, 126, -1, 89, 99, 31, 97, 117, 98, + 125, 126, -1, 21, 95, 91, 96, 89, 119, 125, + 126, -1, 21, 95, 91, 96, 89, 97, 117, 98, + 125, 126, -1, 68, 95, 91, 96, 89, 119, 125, + 126, -1, 22, 95, 91, 96, 89, 97, 117, 98, + 126, -1, 29, 89, 97, 117, 98, 125, 126, -1, + 14, 89, -1, 14, 90, -1, 17, 89, 125, 126, + -1, 17, 89, 100, 89, 125, 126, -1, 17, 89, + 95, 119, 96, 125, 126, -1, 26, 89, -1, 27, + 89, 99, 119, 126, -1, 28, 89, 99, 119, 126, + -1, 92, 89, 125, 126, -1, 92, 89, 100, 89, + 125, 126, -1, 92, 89, 95, 119, 96, 125, 126, + -1, 64, 89, -1, 67, 95, 91, 96, 89, -1, + 65, 95, 91, 96, 89, 97, 117, 98, -1, 66, + 95, 91, 96, 89, 97, 117, 98, -1, 72, 89, + 119, -1, 58, 89, 97, 117, 98, -1, 61, 89, + 97, 117, 98, -1, 62, 89, 97, 117, 98, -1, + 63, 89, 97, 117, 98, -1, 60, 95, 91, 96, + 89, 126, -1, 59, 89, 126, -1, 9, 89, 90, + -1, 10, 89, 90, -1, 23, 89, 99, 89, 126, + -1, 24, 89, -1, 23, 89, 100, 89, 99, 89, + 126, -1, 24, 89, 100, 89, -1, 25, 89, 89, + 97, 117, 98, 125, 126, -1, 25, 89, 100, 89, + 89, 97, 117, 98, 125, 126, -1, 69, 89, 97, + 117, 98, -1, 70, 89, 97, 117, 98, -1, 71, + 89, 97, 117, 98, -1, 55, 89, 97, 117, 98, + -1, 56, 117, -1, 73, 97, 148, 98, -1, 35, + 89, 126, -1, 50, 89, 99, 46, -1, 50, 89, + 99, 148, -1, 50, 89, 99, 101, 113, 102, -1, + 51, 89, 99, 148, -1, 52, 90, -1, 52, -1, + 52, 97, 91, 98, 90, -1, 52, 97, 91, 98, + -1, 53, 90, -1, 53, -1, 53, 97, 91, 98, + 90, -1, 53, 97, 91, 98, -1, 54, 90, -1, + 54, 97, 90, 98, 90, -1, 54, -1, 4, 97, + 148, 98, 101, 114, 102, -1, 4, 97, 148, 98, + 101, 114, 102, 6, 101, 114, 102, -1, 5, 97, + 148, 98, 101, 114, 102, -1, 5, 97, 148, 98, + 101, 114, 102, 6, 101, 114, 102, -1, 49, 97, + 148, 98, 123, 116, -1, 49, 97, 148, 98, 101, + 124, 102, -1, 49, 97, 148, 98, 101, 124, 102, + 6, 101, 124, 102, -1, 50, 89, 99, 148, -1, + 51, 89, 99, 148, -1, 123, 116, -1, 124, 123, + 116, -1, 112, -1, 99, 117, -1, 112, -1, 103, + 127, -1, 128, -1, 127, 93, 128, -1, 36, -1, 3, -1, 40, -1, 39, -1, 41, -1, 44, -1, 42, -1, 45, -1, 47, -1, 43, -1, 48, -1, - 28, -1, 37, -1, 38, -1, 87, 15, 95, 148, - 96, 99, 114, 100, -1, 16, 95, 148, 96, 99, - 114, 100, -1, 11, 95, 117, 96, 99, 114, 100, - -1, 30, 87, 99, 133, 100, 126, -1, 30, 87, - 95, 87, 96, 99, 133, 100, 126, -1, 30, 87, - 95, 87, 91, 88, 91, 87, 91, 87, 96, 126, - -1, 30, 87, 95, 87, 91, 88, 91, 87, 91, - 87, 91, 87, 96, 126, -1, 30, 87, 95, 87, - 91, 88, 91, 87, 96, 126, -1, 30, 87, 98, - 87, 95, 87, 91, 88, 91, 87, 91, 87, 96, - 126, -1, 30, 87, 98, 87, 95, 87, 91, 88, - 91, 87, 96, 126, -1, 30, 87, 98, 87, 99, - 133, 100, 126, -1, 30, 87, 98, 87, 95, 87, - 96, 99, 133, 100, 126, -1, 32, 87, 99, 133, - 100, 126, -1, 32, 87, 95, 87, 96, 99, 133, - 100, 126, -1, 32, 87, 95, 87, 91, 88, 91, - 87, 91, 87, 96, 126, -1, 32, 87, 95, 87, - 91, 88, 91, 87, 96, 126, -1, 32, 87, 98, - 87, 95, 87, 91, 88, 91, 87, 91, 87, 96, - 126, -1, 32, 87, 98, 87, 95, 87, 91, 88, - 91, 87, 96, 126, -1, 32, 87, 98, 87, 99, - 133, 100, 126, -1, 32, 87, 98, 87, 95, 87, - 96, 99, 133, 100, 126, -1, 137, -1, 133, 137, - -1, 135, -1, 134, 135, -1, 74, 118, 101, 114, - -1, 75, 95, 117, 96, 99, 134, 76, 101, 114, - 100, -1, 75, 95, 117, 96, 99, 134, 76, 101, - 100, -1, 75, 95, 117, 96, 99, 134, 100, -1, - 88, 97, 99, 138, 100, -1, 87, 97, 99, 138, - 100, -1, 89, 97, 99, 138, 100, -1, 90, 97, - 99, 138, 100, -1, 139, -1, 139, 138, -1, 87, - 97, 148, 92, -1, 87, -1, 88, -1, 140, -1, - 89, -1, 90, -1, 33, -1, 34, -1, 95, 148, - 96, -1, 102, 141, -1, 87, 95, 96, -1, 87, - 95, 117, 96, -1, 141, 103, 142, -1, 141, -1, - 143, 104, 142, -1, 143, 105, 142, -1, 143, 106, - 142, -1, 143, 81, 142, -1, 143, 82, 142, -1, - 142, -1, 144, 107, 143, -1, 144, 102, 143, -1, - 143, -1, 145, 108, 144, -1, 145, 77, 144, -1, - 145, 109, 144, -1, 145, 79, 144, -1, 145, 80, - 144, -1, 145, 78, 144, -1, 140, 86, 140, -1, - 85, 145, -1, 144, -1, 146, 83, 145, -1, 145, - -1, 147, 84, 146, -1, 146, -1, 147, -1, 152, - -1, 153, -1, 87, 97, 148, 92, -1, 57, 92, - -1, 150, -1, 150, 151, -1, 150, -1, 4, 95, - 148, 96, 99, 151, 100, -1, 149, -1, 149, 154, + 28, -1, 37, -1, 38, -1, 89, 15, 97, 148, + 98, 101, 114, 102, -1, 16, 97, 148, 98, 101, + 114, 102, -1, 11, 97, 117, 98, 101, 114, 102, + -1, 30, 89, 101, 133, 102, 126, -1, 30, 89, + 97, 89, 98, 101, 133, 102, 126, -1, 30, 89, + 97, 89, 93, 90, 93, 89, 93, 89, 98, 126, + -1, 30, 89, 97, 89, 93, 90, 93, 89, 93, + 89, 93, 89, 98, 126, -1, 30, 89, 97, 89, + 93, 90, 93, 89, 98, 126, -1, 30, 89, 100, + 89, 97, 89, 93, 90, 93, 89, 93, 89, 98, + 126, -1, 30, 89, 100, 89, 97, 89, 93, 90, + 93, 89, 98, 126, -1, 30, 89, 100, 89, 101, + 133, 102, 126, -1, 30, 89, 100, 89, 97, 89, + 98, 101, 133, 102, 126, -1, 32, 89, 101, 133, + 102, 126, -1, 32, 89, 97, 89, 98, 101, 133, + 102, 126, -1, 32, 89, 97, 89, 93, 90, 93, + 89, 93, 89, 98, 126, -1, 32, 89, 97, 89, + 93, 90, 93, 89, 98, 126, -1, 32, 89, 100, + 89, 97, 89, 93, 90, 93, 89, 93, 89, 98, + 126, -1, 32, 89, 100, 89, 97, 89, 93, 90, + 93, 89, 98, 126, -1, 32, 89, 100, 89, 101, + 133, 102, 126, -1, 32, 89, 100, 89, 97, 89, + 98, 101, 133, 102, 126, -1, 137, -1, 133, 137, + -1, 135, -1, 134, 135, -1, 74, 118, 103, 114, + -1, 75, 97, 117, 98, 101, 134, 76, 103, 114, + 102, -1, 75, 97, 117, 98, 101, 134, 76, 103, + 102, -1, 75, 97, 117, 98, 101, 134, 102, -1, + 90, 99, 101, 138, 102, -1, 89, 99, 101, 138, + 102, -1, 91, 99, 101, 138, 102, -1, 92, 99, + 101, 138, 102, -1, 139, -1, 139, 138, -1, 89, + 99, 148, 94, -1, 89, -1, 90, -1, 140, -1, + 91, -1, 92, -1, 33, -1, 34, -1, 97, 148, + 98, -1, 104, 141, -1, 89, 97, 98, -1, 89, + 97, 117, 98, -1, 141, 105, 142, -1, 141, -1, + 143, 106, 142, -1, 143, 107, 142, -1, 143, 108, + 142, -1, 143, 83, 142, -1, 143, 84, 142, -1, + 142, -1, 144, 109, 143, -1, 144, 104, 143, -1, + 143, -1, 145, 82, 144, -1, 145, 77, 144, -1, + 145, 81, 144, -1, 145, 79, 144, -1, 145, 80, + 144, -1, 145, 78, 144, -1, 140, 88, 140, -1, + 87, 145, -1, 144, -1, 146, 85, 145, -1, 145, + -1, 147, 86, 146, -1, 146, -1, 147, -1, 152, + -1, 153, -1, 89, 99, 148, 94, -1, 57, 94, + -1, 150, -1, 150, 151, -1, 150, -1, 4, 97, + 148, 98, 101, 151, 102, -1, 149, -1, 149, 154, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const grib_yytype_uint16 grib_yyrline[] = { - 0, 207, 207, 208, 209, 210, 212, 215, 218, 219, - 220, 221, 223, 224, 225, 226, 229, 230, 231, 232, - 233, 234, 235, 236, 240, 241, 244, 245, 248, 249, - 252, 256, 259, 262, 265, 268, 272, 275, 278, 281, - 284, 287, 290, 293, 296, 299, 303, 306, 309, 312, - 315, 318, 321, 324, 327, 330, 333, 336, 339, 342, - 345, 348, 351, 354, 357, 360, 363, 366, 369, 372, - 375, 378, 381, 384, 387, 389, 391, 394, 397, 400, - 404, 408, 411, 414, 426, 438, 450, 453, 456, 459, - 462, 463, 464, 466, 469, 470, 471, 472, 473, 474, - 475, 476, 478, 479, 480, 484, 485, 486, 487, 491, - 492, 493, 496, 497, 500, 501, 505, 506, 509, 510, - 513, 514, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 533, 536, 539, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 558, 562, 563, 566, 567, - 570, 574, 575, 576, 579, 581, 583, 585, 589, 590, - 593, 596, 597, 600, 601, 602, 604, 605, 606, 607, - 608, 609, 613, 614, 617, 618, 619, 620, 621, 622, - 625, 626, 627, 630, 632, 633, 634, 635, 636, 637, - 642, 643, 646, 647, 650, 651, 654, 660, 661, 664, - 665, 668, 669, 672, 676, 679, 680 + 0, 209, 209, 210, 211, 212, 214, 217, 220, 221, + 222, 223, 225, 226, 227, 228, 231, 232, 233, 234, + 235, 236, 237, 238, 242, 243, 246, 247, 250, 251, + 254, 258, 261, 264, 267, 270, 274, 277, 280, 283, + 286, 289, 292, 295, 298, 301, 305, 308, 311, 314, + 317, 320, 323, 326, 329, 332, 335, 338, 341, 344, + 347, 350, 353, 356, 359, 362, 365, 368, 371, 374, + 377, 380, 383, 386, 389, 391, 393, 396, 399, 402, + 406, 410, 413, 416, 428, 440, 452, 455, 458, 461, + 464, 465, 466, 468, 471, 472, 473, 474, 475, 476, + 477, 478, 480, 481, 482, 486, 487, 488, 489, 493, + 494, 495, 498, 499, 502, 503, 507, 508, 511, 512, + 515, 516, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 535, 538, 541, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 564, 565, 568, 569, + 572, 576, 577, 578, 581, 583, 585, 587, 591, 592, + 595, 598, 599, 602, 603, 604, 606, 607, 608, 609, + 610, 611, 615, 616, 619, 620, 621, 622, 623, 624, + 627, 628, 629, 632, 634, 635, 636, 637, 638, 639, + 644, 645, 648, 649, 652, 653, 656, 662, 663, 666, + 667, 670, 671, 674, 678, 681, 682 }; #endif @@ -805,10 +809,10 @@ static const char *const grib_yytname[] = "PADTOEVEN", "PADTOMULTIPLE", "G1_HALF_BYTE", "G1_MESSAGE_LENGTH", "G1_SECTION4_LENGTH", "SECTION_LENGTH", "FLAG", "ITERATOR", "NEAREST", "BOX", "KSEC", "ASSERT", "CASE", "SWITCH", "DEFAULT", "EQ", "NE", "GE", - "LE", "BIT", "BITOFF", "AND", "OR", "NOT", "IS", "IDENT", "STRING", - "INTEGER", "FLOAT", "','", "';'", "'['", "']'", "'('", "')'", "'='", - "'.'", "'{'", "'}'", "':'", "'-'", "'^'", "'*'", "'/'", "'%'", "'+'", - "'>'", "'<'", "$accept", "all", "empty", "dvalues", "instructions", + "LE", "LT", "GT", "BIT", "BITOFF", "AND", "OR", "NOT", "IS", "IDENT", + "STRING", "INTEGER", "FLOAT", "','", "';'", "'['", "']'", "'('", "')'", + "'='", "'.'", "'{'", "'}'", "':'", "'-'", "'^'", "'*'", "'/'", "'%'", + "'+'", "$accept", "all", "empty", "dvalues", "instructions", "instruction", "semi", "argument_list", "arguments", "argument", "simple", "if_block", "when_block", "set", "set_list", "default", "flags", "flag_list", "flag", "list_block", "while_block", @@ -834,8 +838,8 @@ static const grib_yytype_uint16 grib_yytoknum[] = 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 44, 59, 91, 93, 40, 41, 61, 46, 123, - 125, 58, 45, 94, 42, 47, 37, 43, 62, 60 + 345, 346, 347, 44, 59, 91, 93, 40, 41, 61, + 46, 123, 125, 58, 45, 94, 42, 47, 37, 43 }; # endif @@ -933,7 +937,7 @@ static const grib_yytype_uint8 grib_yydefact[] = 132, 119, 120, 0, 90, 0, 91, 93, 97, 101, 0, 0, 180, 0, 178, 29, 171, 199, 182, 187, 188, 184, 185, 186, 191, 190, 194, 198, 196, 197, - 193, 195, 202, 204, 0, 0, 0, 0, 0, 0, + 195, 193, 202, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 7, 0, 0, 168, 209, 0, 0, 0, 7, 61, 0, 0, 0, 0, 0, 7, 7, 0, 7, 7, 7, @@ -981,88 +985,88 @@ static const grib_yytype_int16 grib_yydefgoto[] = /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -488 +#define YYPACT_NINF -491 static const grib_yytype_int16 grib_yypact[] = { - 1040, -488, -69, -56, 49, -34, 16, -39, -24, -15, - 25, 24, 35, 83, 2, 82, 103, 137, 70, 154, - 161, 172, 178, 195, 215, 227, 245, 255, 196, 256, - 257, -2, 9, 10, 261, 179, 263, 267, 269, 265, - 272, 274, 275, 276, 282, 284, 287, 288, 295, 298, - 300, 301, 302, 304, -10, 296, 306, -66, 410, -488, - -488, 1127, 322, -488, -488, -488, -488, -488, -488, 318, - -488, -488, 14, -488, -488, -488, -488, 179, 179, 326, - 327, 330, 332, 179, 334, 335, -488, -488, 179, 50, - 336, 337, 338, 339, 341, 342, 108, 323, -13, -488, - 340, 343, 344, 217, 223, 331, 179, 345, 346, -488, - 347, -488, 352, -488, 356, 350, -488, -488, 179, 351, - -488, -488, -488, 179, 218, -488, -488, -488, 357, 349, - 348, -488, -22, -8, -42, 366, 370, -488, -488, 355, - 331, 368, 360, 363, 364, -488, 371, 372, 373, 374, - 376, 377, 378, 179, 179, 179, 379, 21, 381, 383, - 62, 389, -488, 380, -9, 391, 1300, -488, -488, 395, - 396, -488, 402, 401, -488, 369, 403, 382, 404, -488, - -488, 406, 409, 411, 408, 179, 179, 419, -488, 331, - 413, 412, 415, 416, 421, 422, 430, 431, 440, 434, - 443, 179, 179, 179, 446, 457, 318, 460, 461, 318, - 498, -488, -488, 453, 112, 179, 454, 455, 456, 179, - -42, 147, 458, -488, -488, 179, 128, 218, 218, 218, + 1042, -491, -48, -45, -73, -29, -27, 10, -25, 26, + 126, 12, 71, -57, 74, 76, 91, 102, 99, 116, + 177, 184, 191, 199, 206, 209, 217, 223, 142, 225, + 227, -26, -15, -14, 234, 109, 189, 237, 241, 195, + 243, 247, 267, 270, 207, 278, 282, 290, 286, 298, + 299, 304, 300, 302, -6, 311, 315, -53, 403, -491, + -491, 1131, 321, -491, -491, -491, -491, -491, -491, 229, + -491, -491, 2, -491, -491, -491, -491, 109, 109, 325, + 329, 331, 340, 109, 341, 342, -491, -491, 109, 13, + 344, 345, 346, 354, 355, 357, 141, 349, -46, -491, + 332, 351, 358, -13, 22, 348, 109, 359, 360, -491, + 363, -491, 366, -491, 370, 364, -491, -491, 109, 365, + -491, -491, -491, 109, 218, -491, -491, -491, 372, 375, + 362, -491, -51, -10, 262, 386, 387, -491, -491, 377, + 348, 381, 378, 379, 383, -491, 391, 397, 401, 402, + 400, 404, 405, 109, 109, 109, 406, 14, 398, 399, + 119, 407, -491, 408, -4, 389, 1308, -491, -491, 410, + 411, -491, 409, 416, -491, 418, 419, 422, 428, -491, + -491, 429, 433, 434, 435, 109, 109, 415, -491, 348, + 438, 437, 440, 441, 442, 443, 451, 452, 453, 446, + 455, 109, 109, 109, 456, 457, 229, 458, 459, 229, + 310, -491, -491, 454, 64, 109, 460, 461, 462, 109, + 262, 83, 463, -491, -491, 109, 167, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 179, 179, 179, -488, 459, 179, 179, 179, 462, - 463, 464, 465, 179, 179, 179, -488, 466, 468, 179, - 470, 473, 375, 473, 473, 179, 474, 331, 473, 179, - 524, -488, 467, 179, 179, 469, 471, 480, 482, 475, - 152, 485, 476, 479, -488, 481, -488, 490, 492, 493, - 495, 496, 497, 331, 488, -488, 179, 506, 331, 331, - 500, 11, -27, -43, 65, 26, -25, -488, -488, -488, - -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, - -488, 503, -488, -18, -488, 190, -488, -488, 509, 510, - 512, 508, -488, 511, -488, -488, -488, -488, -488, -488, - -488, -488, -488, -488, -22, -22, -8, -8, -8, -8, - -8, -8, -42, 366, 513, 515, 516, 517, 520, 518, - 519, 521, 530, 522, 523, 526, -488, 525, 527, 179, - 528, 333, 473, -488, 529, 532, 533, 481, -488, 538, - 534, 544, 1216, 1300, 130, 204, 1300, 481, 481, 481, - 1300, 481, 331, 207, 226, 233, 251, 262, 531, -488, - 541, 545, 548, -488, -488, 481, 557, 549, 560, 318, - 331, 561, 551, 566, 318, 331, 498, 567, 569, 206, - 565, -488, -488, -51, -488, -488, -488, -488, -488, -488, - 331, -488, -488, -488, 563, 564, -488, 179, -488, -488, - -488, 546, 562, 568, 179, -488, -488, -488, -488, 481, - 331, -488, 571, 572, -6, 573, -14, 574, 575, 179, - 331, 179, 331, 576, 331, 331, 331, 577, 331, -488, - 179, 331, 179, 331, 179, 331, 179, 481, 179, 481, - 179, 331, 481, 179, 331, 581, 318, 72, 64, -488, - 587, 318, 74, 95, -488, -488, 582, 583, 565, -23, - -488, 570, 200, -488, -488, 179, 179, 481, 179, -52, - -488, 1300, 481, 589, 331, -488, 1300, -14, 84, 654, - -488, -488, 657, 588, -488, 590, -488, -488, -488, -488, - -488, -488, -488, 592, -488, 593, -488, 594, -488, 596, - 458, -31, 597, 331, 601, -488, 331, 602, -488, 578, - 131, 580, 584, 331, 579, 183, 611, 591, 331, 179, - 179, 570, 683, 565, -488, -488, -488, 604, 608, 331, - 605, 606, -488, -488, 609, 331, -488, -488, 612, 614, - 481, 481, 481, 481, 481, 481, 610, -488, 481, -488, - 331, -488, 481, 107, 331, 617, 318, -488, 133, 331, - 619, 318, -488, -488, -488, 616, 570, -488, -488, -488, - 1300, 947, -488, -488, 1300, 1300, 331, 331, 331, 331, - 331, 331, 629, 331, -488, 331, 631, 331, -488, 632, - 188, 633, 331, -488, 634, 278, 206, -488, -488, 622, - 623, 625, -488, -488, -488, -488, -488, -488, 630, -488, - -488, 142, -488, 167, 331, 635, -488, 202, 331, -21, - -488, -488, -488, 331, 640, 331, 641, 331, -488, 331, - 643, 331, -488, -488, -488, 636, -488, 637, -488, -488, - 638, -488, 331, 331, 331, -488, -488, -488 + 218, 109, 109, 109, -491, 466, 109, 109, 109, 468, + 469, 470, 471, 109, 109, 109, -491, 472, 474, 109, + 476, 464, 413, 464, 464, 109, 465, 348, 464, 109, + 467, -491, 449, 109, 109, 450, 473, 479, 480, 477, + 182, 486, 478, 481, -491, 483, -491, 491, 494, 495, + 496, 504, 505, 348, 497, -491, 109, 508, 348, 348, + 500, -54, 51, -23, 27, 106, 55, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, 507, -491, -20, -491, 139, -491, -491, 512, 514, + 515, 509, -491, 510, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -51, -51, -10, -10, -10, -10, + -10, -10, 262, 386, 511, 517, 518, 519, 520, 523, + 524, 530, 531, 525, 526, 527, -491, 521, 528, 109, + 529, 447, 464, -491, 536, 538, 533, 483, -491, 539, + 532, 534, 1222, 1308, 128, 186, 1308, 483, 483, 483, + 1308, 483, 348, 194, 201, 202, 178, 187, 546, -491, + 556, 549, 551, -491, -491, 483, 537, 548, 561, 229, + 348, 563, 553, 567, 229, 348, 310, 568, 569, 35, + 565, -491, -491, -28, -491, -491, -491, -491, -491, -491, + 348, -491, -491, -491, 564, 566, -491, 109, -491, -491, + -491, 482, 559, 570, 109, -491, -491, -491, -491, 483, + 348, -491, 571, 572, 3, 560, -36, 562, 573, 109, + 348, 109, 348, 574, 348, 348, 348, 575, 348, -491, + 109, 348, 109, 348, 109, 348, 109, 483, 109, 483, + 109, 348, 483, 109, 348, 577, 229, 65, 93, -491, + 578, 229, 66, 100, -491, -491, 579, 580, 565, -24, + -491, 586, 213, -491, -491, 109, 109, 483, 109, -39, + -491, 1308, 483, 587, 348, -491, 1308, -36, 145, 659, + -491, -491, 660, 588, -491, 590, -491, -491, -491, -491, + -491, -491, -491, 591, -491, 592, -491, 593, -491, 576, + 463, -31, 584, 348, 585, -491, 348, 594, -491, 601, + 272, 603, 596, 348, 609, 276, 610, 598, 348, 109, + 109, 586, 698, 565, -491, -491, -491, 607, 608, 348, + 604, 605, -491, -491, 611, 348, -491, -491, 614, 615, + 483, 483, 483, 483, 483, 483, 612, -491, 483, -491, + 348, -491, 483, 131, 348, 617, 229, -491, 140, 348, + 618, 229, -491, -491, -491, 619, 586, -491, -491, -491, + 1308, 947, -491, -491, 1308, 1308, 348, 348, 348, 348, + 348, 348, 629, 348, -491, 348, 630, 348, -491, 632, + 280, 633, 348, -491, 634, 316, 35, -491, -491, 623, + 624, 625, -491, -491, -491, -491, -491, -491, 635, -491, + -491, 150, -491, 165, 348, 636, -491, 166, 348, -22, + -491, -491, -491, 348, 639, 348, 641, 348, -491, 348, + 642, 348, -491, -491, -491, 637, -491, 638, -491, -491, + 640, -491, 348, 348, 348, -491, -491, -491 }; /* YYPGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yypgoto[] = { - -488, -488, 7, -488, 0, -488, -487, 448, -221, -151, - -488, -488, -488, -322, 99, -60, 171, -488, 320, -488, - -488, -488, -488, -192, -488, 228, -488, -59, -248, -488, - -99, 615, -40, 76, 134, -115, 499, -488, -65, -488, - 8, 286, -488, -488, 666 + -491, -491, 7, -491, 0, -491, -490, 448, -221, -151, + -491, -491, -491, -322, -81, -60, 171, -491, 323, -491, + -491, -491, -491, -192, -491, 48, -491, -59, -248, -491, + -99, 613, 196, 147, 204, -115, 490, -491, -65, -491, + 5, 285, -491, -491, 670 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1072,81 +1076,81 @@ static const grib_yytype_int16 grib_yypgoto[] = #define YYTABLE_NINF -8 static const grib_yytype_int16 grib_yytable[] = { - 60, 420, 256, 220, 335, 156, 156, 59, 73, 156, - 171, 561, 175, 176, 303, 374, 375, 306, 172, 586, - 379, 160, 508, 184, 571, 223, 77, 417, 418, 417, - 418, 161, 417, 418, 283, 235, 236, 237, 238, 78, - 502, 213, 125, 36, 169, 55, 56, 170, 572, 503, - 298, 299, 260, 81, 116, 117, 83, 410, 222, 228, - 229, 167, 169, 55, 56, 170, 239, 240, 408, 84, - 210, 36, 409, 173, 199, 415, 606, 562, 85, 673, - 73, 419, 230, 231, 232, 200, 109, 157, 270, 257, - 125, 518, 262, 110, 233, 92, 188, 111, 113, 234, - 267, 173, 406, 82, 112, 114, 118, 407, 119, 120, - 121, 122, 86, 87, 376, 260, 123, 116, 117, 88, - 261, 413, 89, 124, 446, 414, 352, 337, 223, 223, + 60, 420, 256, 220, 335, 73, 172, 59, 561, 156, + 171, 156, 175, 176, 303, 374, 375, 306, 156, 586, + 379, 36, 79, 184, 80, 223, 417, 418, 417, 418, + 417, 418, 228, 229, 283, 508, 160, 571, 90, 406, + 91, 213, 125, 199, 407, 260, 161, 116, 117, 77, + 298, 299, 78, 173, 200, 230, 231, 232, 222, 36, + 81, 167, 82, 572, 109, 502, 169, 55, 56, 170, + 84, 110, 210, 606, 503, 111, 113, 73, 562, 410, + 673, 419, 112, 114, 204, 417, 418, 205, 206, 257, + 125, 173, 262, 157, 233, 270, 188, 116, 117, 234, + 267, 118, 518, 119, 120, 121, 122, 83, 185, 88, + 324, 123, 186, 187, 376, 261, 116, 117, 124, 207, + 411, 85, 208, 209, 446, 412, 352, 337, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 79, 185, 80, 116, 117, 186, 187, 326, - 327, 169, 55, 56, 170, 265, 411, 96, 324, 186, - 266, 412, 125, 551, 553, 556, 271, 188, 552, 118, - 557, 119, 120, 121, 122, 93, 90, 563, 91, 123, - 116, 117, 169, 55, 56, 170, 124, 338, 339, 340, - 341, 342, 343, 125, 368, 558, 94, 118, 626, 119, - 120, 121, 122, 627, 380, 196, 197, 123, 381, 262, - 125, 325, 116, 117, 124, 336, 120, 488, 169, 55, - 56, 170, 493, 459, 631, 392, 125, 186, 125, 632, - 95, 594, 118, 664, 119, 120, 121, 122, 665, 387, - 388, 97, 123, 332, 171, 477, 479, 171, 98, 124, - 125, 116, 117, 125, 125, 125, 417, 418, 666, 99, - 125, 125, 125, 667, 118, 100, 119, 120, 121, 122, - 169, 55, 56, 170, 123, 169, 55, 56, 170, 421, - 422, 124, 101, 599, 116, 117, 507, 570, 654, 565, - 566, 106, 188, 670, 550, 116, 117, 461, 671, 555, - 470, 186, 102, 125, 186, 119, 120, 121, 122, 344, - 345, 244, 204, 123, 103, 205, 206, 450, 207, 472, - 124, 208, 209, 186, 460, 462, 474, 464, 465, 466, - 186, 468, 104, 471, 473, 475, 118, 563, 119, 120, - 121, 122, 105, 107, 108, 484, 476, 118, 115, 119, - 120, 121, 122, 124, 139, 138, 140, 478, 141, 142, - 286, 143, 144, 145, 124, 169, 55, 56, 170, 346, - 347, 348, 349, 350, 351, 146, 125, 147, 658, 513, - 148, 149, 150, 458, 188, 151, 463, 152, 153, 514, - 467, 188, 188, 158, 188, 188, 188, 154, 188, 155, - 188, 188, 188, 159, 630, 169, 55, 56, 170, 635, - 162, 540, 188, 540, 168, 177, 178, 541, 179, 543, - 180, 198, 546, 182, 183, 190, 191, 192, 193, 171, - 194, 195, 210, 445, 171, 226, 216, 201, 378, 203, - 202, 217, 214, 215, 218, 219, 221, 569, 225, 241, - 243, 227, 575, 262, 242, 246, 188, 245, 247, 248, - 249, 250, 251, 252, 399, 275, 125, 373, 125, 403, - 404, 253, 254, 255, 259, 269, 277, 125, 160, 125, - 263, 125, 264, 125, 188, 125, 188, 125, 268, 188, - 125, 171, 272, 161, 603, 604, 171, 273, 274, 276, - 278, 307, 279, 280, 282, 281, 285, 287, 288, 289, - 290, 574, 125, 125, 188, 291, 292, 293, 294, 188, - 616, 617, 618, 619, 620, 621, 308, 295, 623, 296, - 297, 181, 625, 301, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 302, 319, 320, 304, 305, 323, - 328, 329, 330, 355, 334, 260, 359, 360, 361, 362, - 370, 377, 366, 469, 367, 369, 261, 384, 382, 385, - 383, 171, 389, 391, 386, 390, 171, 393, 186, 394, - 395, 489, 396, 397, 398, 400, 494, 188, 188, 188, - 188, 188, 188, 402, 416, 188, 405, 424, 425, 188, - 426, 504, 430, 258, 427, 434, 435, 428, 436, 429, - 637, 639, 431, 432, 640, 641, 433, 437, 438, 439, - 508, 515, 440, 442, 441, 444, 480, 449, 481, 447, - 452, 524, 448, 526, 284, 528, 529, 530, 451, 532, - 453, 482, 534, 483, 536, 485, 538, 487, 486, 490, - 491, 300, 545, 492, 496, 548, 497, 500, 505, 506, - 578, 511, 564, 579, 512, 593, 598, 331, 595, 333, - 516, 517, 549, 519, 521, 522, 527, 531, 554, 559, - 560, 576, 580, 596, 581, 577, 582, 583, 584, 605, - 601, 354, 585, 588, 356, 357, 358, 590, 592, 600, - 607, 363, 364, 365, 608, 622, 610, 611, 629, 612, - 634, 614, 587, 615, 589, 636, 648, 591, 651, 653, - 655, 657, 660, 661, 597, 662, 663, 675, 677, 602, - 680, 669, 682, 683, 684, 659, 495, 573, 174, 224, - 609, 353, 520, 0, 401, 0, 613, 0, 0, 0, + 223, 223, 116, 117, 169, 55, 56, 170, 408, 326, + 327, 118, 409, 119, 120, 121, 122, 415, 551, 556, + 89, 123, 125, 552, 557, 325, 271, 188, 124, 92, + 118, 93, 119, 120, 121, 122, 260, 563, 116, 117, + 123, 332, 169, 55, 56, 170, 94, 124, 96, 169, + 55, 56, 170, 125, 368, 553, 118, 95, 119, 120, + 121, 122, 558, 413, 380, 97, 123, 414, 381, 262, + 125, 116, 117, 124, 265, 86, 87, 488, 186, 266, + 116, 117, 493, 459, 626, 392, 125, 186, 125, 627, + 421, 422, 118, 631, 119, 120, 121, 122, 632, 106, + 196, 197, 123, 664, 171, 477, 479, 171, 665, 124, + 125, 116, 117, 125, 125, 125, 336, 120, 666, 670, + 125, 125, 125, 667, 671, 118, 98, 119, 120, 121, + 122, 387, 388, 99, 118, 476, 119, 120, 121, 122, + 100, 461, 124, 138, 478, 186, 507, 570, 101, 470, + 141, 124, 188, 186, 550, 102, 472, 474, 103, 555, + 186, 186, 146, 125, 565, 566, 104, 119, 120, 121, + 122, 244, 105, 307, 107, 123, 108, 450, 169, 55, + 56, 170, 124, 115, 460, 462, 139, 464, 465, 466, + 140, 468, 142, 471, 473, 475, 143, 563, 308, 235, + 236, 237, 238, 239, 240, 484, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 144, 319, 320, 145, + 286, 169, 55, 56, 170, 169, 55, 56, 170, 169, + 55, 56, 170, 147, 594, 150, 125, 148, 599, 513, + 344, 345, 654, 458, 188, 149, 463, 151, 152, 514, + 467, 188, 188, 153, 188, 188, 188, 154, 188, 155, + 188, 188, 188, 162, 630, 169, 55, 56, 170, 635, + 158, 540, 188, 540, 159, 168, 177, 541, 658, 543, + 178, 179, 546, 338, 339, 340, 341, 342, 343, 171, + 180, 201, 182, 183, 171, 190, 191, 192, 378, 346, + 347, 348, 349, 350, 351, 193, 194, 569, 195, 198, + 202, 210, 575, 262, 216, 203, 188, 217, 214, 215, + 218, 219, 221, 226, 399, 225, 125, 227, 125, 403, + 404, 241, 245, 242, 243, 246, 247, 125, 160, 125, + 248, 125, 249, 125, 188, 125, 188, 125, 250, 188, + 125, 171, 251, 252, 603, 604, 171, 253, 260, 263, + 264, 254, 255, 259, 285, 269, 273, 373, 268, 272, + 161, 574, 125, 125, 188, 274, 275, 276, 277, 188, + 616, 617, 618, 619, 620, 621, 278, 279, 623, 280, + 281, 181, 625, 282, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 301, 302, 304, 305, 445, + 261, 382, 323, 370, 377, 659, 508, 573, 328, 329, + 330, 334, 355, 469, 359, 360, 361, 362, 384, 385, + 366, 171, 367, 369, 383, 389, 171, 391, 386, 390, + 393, 489, 186, 394, 395, 396, 494, 188, 188, 188, + 188, 188, 188, 397, 398, 188, 400, 402, 405, 188, + 416, 504, 424, 258, 425, 426, 430, 427, 428, 429, + 637, 639, 434, 435, 640, 641, 431, 432, 433, 436, + 437, 515, 441, 438, 439, 440, 442, 485, 444, 449, + 452, 524, 453, 526, 284, 528, 529, 530, 447, 532, + 448, 451, 534, 480, 536, 481, 538, 482, 483, 486, + 487, 300, 545, 490, 491, 548, 492, 496, 497, 500, + 511, 505, 519, 506, 521, 578, 579, 331, 512, 333, + 549, 554, 516, 517, 585, 522, 527, 531, 559, 560, + 564, 576, 588, 590, 580, 577, 581, 582, 583, 584, + 593, 354, 592, 595, 356, 357, 358, 596, 598, 601, + 600, 363, 364, 365, 605, 607, 608, 610, 611, 622, + 629, 634, 587, 612, 589, 614, 615, 591, 648, 651, + 636, 653, 655, 657, 597, 660, 661, 662, 675, 602, + 677, 680, 353, 663, 669, 682, 683, 224, 684, 495, + 609, 520, 174, 0, 401, 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, 0, 0, 628, 0, 0, 0, 0, 633, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1175,122 +1179,123 @@ static const grib_yytype_int16 grib_yytable[] = 32, 33, 34, 35, 0, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 164, 0, 0, 165, 0, 0, - -7, 1, 0, 0, 2, 3, 0, 638, 4, 5, - 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 0, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 0, 53, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 54, 55, 56, - 57, 163, 3, 0, 0, 4, 5, 6, 7, 8, - 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 0, 26, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 29, 30, 31, - 32, 33, 34, 35, 0, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 164, 0, 0, 165, 0, 166, - 163, 3, 0, 0, 4, 5, 6, 7, 8, 9, - 10, 0, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 0, 26, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 454, 163, 3, 165, 0, 4, 5, - 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 0, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 29, 30, 31, 32, 33, 34, 35, 0, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 0, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 164, 0, 0, 165, + 0, 0, -7, 1, 0, 0, 2, 3, 0, 638, + 4, 5, 6, 7, 8, 9, 10, 0, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 0, 26, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 0, 53, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 55, 56, 57, 163, 3, 0, 0, 4, + 5, 6, 7, 8, 9, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 0, 26, 0, 0, 27, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 29, 30, 31, 32, 33, 34, 35, 0, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 0, 53, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 164, 0, 0, 165, 0, 166, 163, 3, 0, 0, + 4, 5, 6, 7, 8, 9, 10, 0, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 0, 26, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 0, 53, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 454, 163, 3, 165, 0, 4, 5, 6, 7, + 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, + 26, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, + 31, 32, 33, 34, 35, 0, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 165 }; static const grib_yytype_int16 grib_yycheck[] = { - 0, 323, 153, 118, 225, 15, 15, 0, 0, 15, - 69, 498, 77, 78, 206, 263, 264, 209, 4, 50, - 268, 87, 74, 88, 76, 124, 95, 50, 51, 50, - 51, 97, 50, 51, 185, 77, 78, 79, 80, 95, - 91, 106, 35, 57, 87, 88, 89, 90, 100, 100, - 201, 202, 31, 87, 33, 34, 95, 100, 123, 81, - 82, 61, 87, 88, 89, 90, 108, 109, 95, 93, - 101, 57, 99, 87, 87, 100, 563, 100, 93, 100, - 72, 99, 104, 105, 106, 98, 88, 97, 97, 154, - 83, 97, 157, 95, 102, 93, 89, 88, 88, 107, - 160, 87, 91, 87, 95, 95, 85, 96, 87, 88, - 89, 90, 87, 88, 265, 31, 95, 33, 34, 95, - 99, 95, 87, 102, 372, 99, 241, 226, 227, 228, + 0, 323, 153, 118, 225, 0, 4, 0, 498, 15, + 69, 15, 77, 78, 206, 263, 264, 209, 15, 50, + 268, 57, 95, 88, 97, 124, 50, 51, 50, 51, + 50, 51, 83, 84, 185, 74, 89, 76, 95, 93, + 97, 106, 35, 89, 98, 31, 99, 33, 34, 97, + 201, 202, 97, 89, 100, 106, 107, 108, 123, 57, + 89, 61, 89, 102, 90, 93, 89, 90, 91, 92, + 95, 97, 103, 563, 102, 90, 90, 72, 102, 102, + 102, 101, 97, 97, 97, 50, 51, 100, 101, 154, + 83, 89, 157, 99, 104, 99, 89, 33, 34, 109, + 160, 87, 99, 89, 90, 91, 92, 97, 95, 97, + 46, 97, 99, 100, 265, 101, 33, 34, 104, 97, + 93, 95, 100, 101, 372, 98, 241, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 93, 93, 95, 33, 34, 97, 98, 214, - 215, 87, 88, 89, 90, 93, 91, 87, 46, 97, - 98, 96, 155, 91, 100, 91, 166, 160, 96, 85, - 96, 87, 88, 89, 90, 93, 93, 499, 95, 95, - 33, 34, 87, 88, 89, 90, 102, 227, 228, 229, - 230, 231, 232, 186, 259, 100, 93, 85, 91, 87, - 88, 89, 90, 96, 269, 97, 98, 95, 273, 274, - 203, 99, 33, 34, 102, 87, 88, 409, 87, 88, - 89, 90, 414, 93, 91, 285, 219, 97, 221, 96, - 93, 100, 85, 91, 87, 88, 89, 90, 96, 87, - 88, 87, 95, 96, 303, 396, 397, 306, 87, 102, - 243, 33, 34, 246, 247, 248, 50, 51, 91, 87, - 253, 254, 255, 96, 85, 87, 87, 88, 89, 90, - 87, 88, 89, 90, 95, 87, 88, 89, 90, 89, - 90, 102, 87, 100, 33, 34, 437, 508, 100, 89, - 90, 95, 285, 91, 486, 33, 34, 93, 96, 491, - 93, 97, 87, 296, 97, 87, 88, 89, 90, 233, - 234, 140, 95, 95, 87, 98, 99, 377, 95, 93, - 102, 98, 99, 97, 384, 385, 93, 387, 388, 389, - 97, 391, 87, 393, 394, 395, 85, 659, 87, 88, - 89, 90, 87, 87, 87, 405, 95, 85, 87, 87, - 88, 89, 90, 102, 87, 92, 87, 95, 93, 87, - 189, 87, 87, 87, 102, 87, 88, 89, 90, 235, - 236, 237, 238, 239, 240, 93, 369, 93, 100, 444, - 93, 93, 87, 383, 377, 87, 386, 87, 87, 449, - 390, 384, 385, 97, 387, 388, 389, 95, 391, 95, - 393, 394, 395, 97, 596, 87, 88, 89, 90, 601, - 0, 476, 405, 478, 92, 89, 89, 477, 88, 479, - 88, 98, 482, 89, 89, 89, 89, 89, 89, 488, - 89, 89, 101, 100, 493, 86, 89, 97, 267, 95, - 97, 89, 97, 97, 88, 95, 95, 507, 91, 83, - 95, 103, 512, 518, 84, 95, 449, 89, 95, 95, - 89, 89, 89, 89, 293, 96, 459, 92, 461, 298, - 299, 95, 95, 95, 95, 95, 94, 470, 87, 472, - 99, 474, 99, 476, 477, 478, 479, 480, 99, 482, - 483, 550, 97, 97, 559, 560, 555, 95, 97, 96, - 96, 3, 96, 94, 96, 94, 87, 94, 96, 94, - 94, 511, 505, 506, 507, 94, 94, 87, 87, 512, - 580, 581, 582, 583, 584, 585, 28, 87, 588, 95, - 87, 83, 592, 87, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 87, 47, 48, 87, 87, 96, - 96, 96, 96, 94, 96, 31, 94, 94, 94, 94, - 87, 87, 96, 392, 96, 95, 99, 87, 99, 87, - 99, 630, 87, 94, 99, 99, 635, 87, 97, 87, - 87, 410, 87, 87, 87, 97, 415, 580, 581, 582, - 583, 584, 585, 87, 91, 588, 96, 88, 88, 592, - 88, 430, 87, 155, 96, 87, 87, 96, 87, 96, - 610, 611, 96, 96, 614, 615, 96, 87, 96, 96, - 74, 450, 96, 96, 99, 97, 95, 94, 87, 100, - 96, 460, 100, 462, 186, 464, 465, 466, 100, 468, - 96, 96, 471, 95, 473, 88, 475, 87, 99, 88, - 99, 203, 481, 87, 87, 484, 87, 92, 95, 95, - 6, 99, 92, 6, 96, 87, 87, 219, 88, 221, - 99, 99, 91, 100, 100, 100, 100, 100, 91, 97, - 97, 92, 94, 99, 94, 514, 94, 94, 94, 6, - 99, 243, 96, 96, 246, 247, 248, 96, 96, 88, - 96, 253, 254, 255, 96, 95, 101, 101, 91, 100, - 91, 99, 541, 99, 543, 99, 87, 546, 87, 87, - 87, 87, 100, 100, 553, 100, 96, 87, 87, 558, - 87, 96, 96, 96, 96, 636, 416, 509, 72, 124, - 569, 242, 456, -1, 296, -1, 575, -1, -1, -1, + 239, 240, 33, 34, 89, 90, 91, 92, 97, 214, + 215, 87, 101, 89, 90, 91, 92, 102, 93, 93, + 89, 97, 155, 98, 98, 101, 166, 160, 104, 95, + 87, 95, 89, 90, 91, 92, 31, 499, 33, 34, + 97, 98, 89, 90, 91, 92, 95, 104, 89, 89, + 90, 91, 92, 186, 259, 102, 87, 95, 89, 90, + 91, 92, 102, 97, 269, 89, 97, 101, 273, 274, + 203, 33, 34, 104, 95, 89, 90, 409, 99, 100, + 33, 34, 414, 95, 93, 285, 219, 99, 221, 98, + 91, 92, 87, 93, 89, 90, 91, 92, 98, 97, + 99, 100, 97, 93, 303, 396, 397, 306, 98, 104, + 243, 33, 34, 246, 247, 248, 89, 90, 93, 93, + 253, 254, 255, 98, 98, 87, 89, 89, 90, 91, + 92, 89, 90, 89, 87, 97, 89, 90, 91, 92, + 89, 95, 104, 94, 97, 99, 437, 508, 89, 95, + 95, 104, 285, 99, 486, 89, 95, 95, 89, 491, + 99, 99, 95, 296, 91, 92, 89, 89, 90, 91, + 92, 140, 89, 3, 89, 97, 89, 377, 89, 90, + 91, 92, 104, 89, 384, 385, 89, 387, 388, 389, + 89, 391, 89, 393, 394, 395, 89, 659, 28, 77, + 78, 79, 80, 81, 82, 405, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 89, 47, 48, 89, + 189, 89, 90, 91, 92, 89, 90, 91, 92, 89, + 90, 91, 92, 95, 102, 89, 369, 95, 102, 444, + 233, 234, 102, 383, 377, 95, 386, 89, 89, 449, + 390, 384, 385, 89, 387, 388, 389, 97, 391, 97, + 393, 394, 395, 0, 596, 89, 90, 91, 92, 601, + 99, 476, 405, 478, 99, 94, 91, 477, 102, 479, + 91, 90, 482, 227, 228, 229, 230, 231, 232, 488, + 90, 99, 91, 91, 493, 91, 91, 91, 267, 235, + 236, 237, 238, 239, 240, 91, 91, 507, 91, 100, + 99, 103, 512, 518, 91, 97, 449, 91, 99, 99, + 90, 97, 97, 88, 293, 93, 459, 105, 461, 298, + 299, 85, 91, 86, 97, 97, 97, 470, 89, 472, + 97, 474, 91, 476, 477, 478, 479, 480, 91, 482, + 483, 550, 91, 91, 559, 560, 555, 97, 31, 101, + 101, 97, 97, 97, 89, 97, 97, 94, 101, 99, + 99, 511, 505, 506, 507, 99, 98, 98, 96, 512, + 580, 581, 582, 583, 584, 585, 98, 98, 588, 96, + 96, 83, 592, 98, 96, 98, 96, 96, 96, 96, + 89, 89, 89, 97, 89, 89, 89, 89, 89, 102, + 101, 101, 98, 89, 89, 636, 74, 509, 98, 98, + 98, 98, 96, 392, 96, 96, 96, 96, 89, 89, + 98, 630, 98, 97, 101, 89, 635, 96, 101, 101, + 89, 410, 99, 89, 89, 89, 415, 580, 581, 582, + 583, 584, 585, 89, 89, 588, 99, 89, 98, 592, + 93, 430, 90, 155, 90, 90, 89, 98, 98, 98, + 610, 611, 89, 89, 614, 615, 98, 98, 98, 89, + 89, 450, 101, 98, 98, 98, 98, 90, 99, 96, + 98, 460, 98, 462, 186, 464, 465, 466, 102, 468, + 102, 102, 471, 97, 473, 89, 475, 98, 97, 101, + 89, 203, 481, 90, 101, 484, 89, 89, 89, 94, + 101, 97, 102, 97, 102, 6, 6, 219, 98, 221, + 93, 93, 101, 101, 98, 102, 102, 102, 99, 99, + 94, 94, 98, 98, 96, 514, 96, 96, 96, 96, + 89, 243, 98, 90, 246, 247, 248, 101, 89, 101, + 90, 253, 254, 255, 6, 98, 98, 103, 103, 97, + 93, 93, 541, 102, 543, 101, 101, 546, 89, 89, + 101, 89, 89, 89, 553, 102, 102, 102, 89, 558, + 89, 89, 242, 98, 98, 98, 98, 124, 98, 416, + 569, 456, 72, -1, 296, -1, 575, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 590, -1, -1, -1, 594, -1, -1, -1, -1, 599, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1319,43 +1324,44 @@ static const grib_yytype_int16 grib_yycheck[] = 53, 54, 55, 56, -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 87, -1, -1, 90, -1, -1, - 0, 1, -1, -1, 4, 5, -1, 100, 8, 9, - 10, 11, 12, 13, 14, -1, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, -1, 32, -1, -1, 35, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, -1, 75, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, - 90, 4, 5, -1, -1, 8, 9, 10, 11, 12, - 13, 14, -1, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, - -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 87, -1, -1, 90, -1, 92, - 4, 5, -1, -1, 8, 9, 10, 11, 12, 13, - 14, -1, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, -1, 32, -1, - -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, 4, 5, 90, -1, 8, 9, - 10, 11, 12, 13, 14, -1, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, -1, 32, -1, -1, 35, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, -1, 75, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, - 90 + -1, -1, -1, -1, -1, -1, 89, -1, -1, 92, + -1, -1, 0, 1, -1, -1, 4, 5, -1, 102, + 8, 9, 10, 11, 12, 13, 14, -1, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, -1, -1, 35, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, -1, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 89, 90, 91, 92, 4, 5, -1, -1, 8, + 9, 10, 11, 12, 13, 14, -1, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, -1, -1, 35, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, -1, 75, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 89, -1, -1, 92, -1, 94, 4, 5, -1, -1, + 8, 9, 10, 11, 12, 13, 14, -1, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, -1, -1, 35, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, -1, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 89, 4, 5, 92, -1, 8, 9, 10, 11, + 12, 13, 14, -1, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, -1, -1, 35, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, -1, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, + 92 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1367,70 +1373,70 @@ static const grib_yytype_uint8 grib_yystos[] = 25, 26, 27, 28, 29, 30, 32, 35, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 75, 87, 88, 89, 90, 111, 112, + 71, 72, 73, 75, 89, 90, 91, 92, 111, 112, 114, 115, 120, 121, 122, 129, 130, 131, 132, 133, - 136, 137, 149, 150, 152, 153, 154, 95, 95, 93, - 95, 87, 87, 95, 93, 93, 87, 88, 95, 87, - 93, 95, 93, 93, 93, 93, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 95, 87, 87, 88, - 95, 88, 95, 88, 95, 87, 33, 34, 85, 87, - 88, 89, 90, 95, 102, 112, 117, 118, 119, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 92, 87, - 87, 93, 87, 87, 87, 87, 93, 93, 93, 93, - 87, 87, 87, 87, 95, 95, 15, 97, 97, 97, - 87, 97, 0, 4, 87, 90, 92, 114, 92, 87, - 90, 137, 4, 87, 154, 148, 148, 89, 89, 88, - 88, 117, 89, 89, 148, 93, 97, 98, 112, 125, - 89, 89, 89, 89, 89, 89, 97, 98, 98, 87, - 98, 97, 97, 95, 95, 98, 99, 95, 98, 99, - 101, 112, 126, 148, 97, 97, 89, 89, 88, 95, - 145, 95, 148, 140, 141, 91, 86, 103, 81, 82, - 104, 105, 106, 102, 107, 77, 78, 79, 80, 108, - 109, 83, 84, 95, 126, 89, 95, 95, 95, 89, - 89, 89, 89, 95, 95, 95, 119, 148, 117, 95, - 31, 99, 148, 99, 99, 93, 98, 125, 99, 95, - 97, 114, 97, 95, 97, 96, 96, 94, 96, 96, - 94, 94, 96, 119, 117, 87, 126, 94, 96, 94, - 94, 94, 94, 87, 87, 87, 95, 87, 119, 119, - 117, 87, 87, 133, 87, 87, 133, 3, 28, 36, + 136, 137, 149, 150, 152, 153, 154, 97, 97, 95, + 97, 89, 89, 97, 95, 95, 89, 90, 97, 89, + 95, 97, 95, 95, 95, 95, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 97, 89, 89, 90, + 97, 90, 97, 90, 97, 89, 33, 34, 87, 89, + 90, 91, 92, 97, 104, 112, 117, 118, 119, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 94, 89, + 89, 95, 89, 89, 89, 89, 95, 95, 95, 95, + 89, 89, 89, 89, 97, 97, 15, 99, 99, 99, + 89, 99, 0, 4, 89, 92, 94, 114, 94, 89, + 92, 137, 4, 89, 154, 148, 148, 91, 91, 90, + 90, 117, 91, 91, 148, 95, 99, 100, 112, 125, + 91, 91, 91, 91, 91, 91, 99, 100, 100, 89, + 100, 99, 99, 97, 97, 100, 101, 97, 100, 101, + 103, 112, 126, 148, 99, 99, 91, 91, 90, 97, + 145, 97, 148, 140, 141, 93, 88, 105, 83, 84, + 106, 107, 108, 104, 109, 77, 78, 79, 80, 81, + 82, 85, 86, 97, 126, 91, 97, 97, 97, 91, + 91, 91, 91, 97, 97, 97, 119, 148, 117, 97, + 31, 101, 148, 101, 101, 95, 100, 125, 101, 97, + 99, 114, 99, 97, 99, 98, 98, 96, 98, 98, + 96, 96, 98, 119, 117, 89, 126, 96, 98, 96, + 96, 96, 96, 89, 89, 89, 97, 89, 119, 119, + 117, 89, 89, 133, 89, 89, 133, 3, 28, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, - 48, 127, 128, 96, 46, 99, 148, 148, 96, 96, - 96, 117, 96, 117, 96, 118, 87, 140, 142, 142, + 48, 127, 128, 98, 46, 101, 148, 148, 98, 98, + 98, 117, 98, 117, 98, 118, 89, 140, 142, 142, 142, 142, 142, 142, 143, 143, 144, 144, 144, 144, - 144, 144, 145, 146, 117, 94, 117, 117, 117, 94, - 94, 94, 94, 117, 117, 117, 96, 96, 148, 95, - 87, 138, 139, 92, 138, 138, 119, 87, 126, 138, - 148, 148, 99, 99, 87, 87, 99, 87, 88, 87, - 99, 94, 125, 87, 87, 87, 87, 87, 87, 126, - 97, 117, 87, 126, 126, 96, 91, 96, 95, 99, - 100, 91, 96, 95, 99, 100, 91, 50, 51, 99, - 123, 89, 90, 113, 88, 88, 88, 96, 96, 96, - 87, 96, 96, 96, 87, 87, 87, 87, 96, 96, - 96, 99, 96, 117, 97, 100, 138, 100, 100, 94, - 125, 100, 96, 96, 87, 114, 150, 151, 114, 93, - 125, 93, 125, 114, 125, 125, 125, 114, 125, 126, - 93, 125, 93, 125, 93, 125, 95, 119, 95, 119, - 95, 87, 96, 95, 125, 88, 99, 87, 133, 126, - 88, 99, 87, 133, 126, 128, 87, 87, 123, 124, - 92, 116, 91, 100, 126, 95, 95, 119, 74, 134, - 135, 99, 96, 148, 125, 126, 99, 99, 97, 100, - 151, 100, 100, 117, 126, 117, 126, 100, 126, 126, - 126, 100, 126, 117, 126, 117, 126, 117, 126, 117, - 148, 125, 117, 125, 117, 126, 125, 117, 126, 91, - 133, 91, 96, 100, 91, 133, 91, 96, 100, 97, - 97, 116, 100, 123, 92, 89, 90, 117, 117, 125, - 118, 76, 100, 135, 114, 125, 92, 126, 6, 6, - 94, 94, 94, 94, 94, 96, 50, 126, 96, 126, - 96, 126, 96, 87, 100, 88, 99, 126, 87, 100, - 88, 99, 126, 148, 148, 6, 116, 96, 96, 126, - 101, 101, 100, 126, 99, 99, 125, 125, 125, 125, - 125, 125, 95, 125, 126, 125, 91, 96, 126, 91, - 133, 91, 96, 126, 91, 133, 99, 114, 100, 114, - 114, 114, 126, 126, 126, 126, 126, 126, 87, 126, - 126, 87, 126, 87, 100, 87, 126, 87, 100, 124, - 100, 100, 100, 96, 91, 96, 91, 96, 126, 96, - 91, 96, 126, 100, 126, 87, 126, 87, 126, 126, - 87, 126, 96, 96, 96, 126, 126, 126 + 144, 144, 145, 146, 117, 96, 117, 117, 117, 96, + 96, 96, 96, 117, 117, 117, 98, 98, 148, 97, + 89, 138, 139, 94, 138, 138, 119, 89, 126, 138, + 148, 148, 101, 101, 89, 89, 101, 89, 90, 89, + 101, 96, 125, 89, 89, 89, 89, 89, 89, 126, + 99, 117, 89, 126, 126, 98, 93, 98, 97, 101, + 102, 93, 98, 97, 101, 102, 93, 50, 51, 101, + 123, 91, 92, 113, 90, 90, 90, 98, 98, 98, + 89, 98, 98, 98, 89, 89, 89, 89, 98, 98, + 98, 101, 98, 117, 99, 102, 138, 102, 102, 96, + 125, 102, 98, 98, 89, 114, 150, 151, 114, 95, + 125, 95, 125, 114, 125, 125, 125, 114, 125, 126, + 95, 125, 95, 125, 95, 125, 97, 119, 97, 119, + 97, 89, 98, 97, 125, 90, 101, 89, 133, 126, + 90, 101, 89, 133, 126, 128, 89, 89, 123, 124, + 94, 116, 93, 102, 126, 97, 97, 119, 74, 134, + 135, 101, 98, 148, 125, 126, 101, 101, 99, 102, + 151, 102, 102, 117, 126, 117, 126, 102, 126, 126, + 126, 102, 126, 117, 126, 117, 126, 117, 126, 117, + 148, 125, 117, 125, 117, 126, 125, 117, 126, 93, + 133, 93, 98, 102, 93, 133, 93, 98, 102, 99, + 99, 116, 102, 123, 94, 91, 92, 117, 117, 125, + 118, 76, 102, 135, 114, 125, 94, 126, 6, 6, + 96, 96, 96, 96, 96, 98, 50, 126, 98, 126, + 98, 126, 98, 89, 102, 90, 101, 126, 89, 102, + 90, 101, 126, 148, 148, 6, 116, 98, 98, 126, + 103, 103, 102, 126, 101, 101, 125, 125, 125, 125, + 125, 125, 97, 125, 126, 125, 93, 98, 126, 93, + 133, 93, 98, 126, 93, 133, 101, 114, 102, 114, + 114, 114, 126, 126, 126, 126, 126, 126, 89, 126, + 126, 89, 126, 89, 102, 89, 126, 89, 102, 124, + 102, 102, 102, 98, 93, 98, 93, 98, 126, 98, + 93, 98, 126, 102, 126, 89, 126, 89, 126, 126, + 89, 126, 98, 98, 98, 126, 126, 126 }; #define grib_yyerrok (grib_yyerrstatus = 0) @@ -2244,210 +2250,210 @@ grib_yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 207 "griby.y" +#line 209 "griby.y" { grib_parser_all_actions = 0;grib_parser_concept=0; grib_parser_rules=0; } break; case 3: /* Line 1455 of yacc.c */ -#line 208 "griby.y" +#line 210 "griby.y" { grib_parser_concept = reverse((grib_yyvsp[(1) - (1)].concept_value)); } break; case 4: /* Line 1455 of yacc.c */ -#line 209 "griby.y" +#line 211 "griby.y" { grib_parser_all_actions = (grib_yyvsp[(1) - (1)].act); } break; case 5: /* Line 1455 of yacc.c */ -#line 210 "griby.y" +#line 212 "griby.y" { grib_parser_rules = (grib_yyvsp[(1) - (1)].rules); } break; case 6: /* Line 1455 of yacc.c */ -#line 212 "griby.y" +#line 214 "griby.y" { grib_parser_all_actions = 0; grib_parser_concept=0; grib_parser_rules=0; } break; case 8: /* Line 1455 of yacc.c */ -#line 218 "griby.y" +#line 220 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].dval));} break; case 9: /* Line 1455 of yacc.c */ -#line 219 "griby.y" +#line 221 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,(grib_yyvsp[(1) - (3)].dvalue),(grib_yyvsp[(3) - (3)].dval));} break; case 10: /* Line 1455 of yacc.c */ -#line 220 "griby.y" +#line 222 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].lval));} break; case 11: /* Line 1455 of yacc.c */ -#line 221 "griby.y" +#line 223 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,(grib_yyvsp[(1) - (3)].dvalue),(grib_yyvsp[(3) - (3)].lval));} break; case 13: /* Line 1455 of yacc.c */ -#line 224 "griby.y" +#line 226 "griby.y" { (grib_yyvsp[(1) - (2)].act)->next = (grib_yyvsp[(2) - (2)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act); } break; case 14: /* Line 1455 of yacc.c */ -#line 225 "griby.y" +#line 227 "griby.y" { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(3) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } break; case 15: /* Line 1455 of yacc.c */ -#line 226 "griby.y" +#line 228 "griby.y" { (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act);} break; case 26: /* Line 1455 of yacc.c */ -#line 244 "griby.y" +#line 246 "griby.y" { (grib_yyval.explist) = 0; } break; case 29: /* Line 1455 of yacc.c */ -#line 249 "griby.y" +#line 251 "griby.y" { (grib_yyvsp[(1) - (3)].explist)->next = (grib_yyvsp[(3) - (3)].explist); (grib_yyval.explist) = (grib_yyvsp[(1) - (3)].explist); } break; case 30: /* Line 1455 of yacc.c */ -#line 252 "griby.y" +#line 254 "griby.y" { (grib_yyval.explist) = grib_arguments_new(grib_parser_context,(grib_yyvsp[(1) - (1)].exp),NULL); } break; case 31: /* Line 1455 of yacc.c */ -#line 257 "griby.y" +#line 259 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 32: /* Line 1455 of yacc.c */ -#line 260 "griby.y" +#line 262 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 33: /* Line 1455 of yacc.c */ -#line 263 "griby.y" +#line 265 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 34: /* Line 1455 of yacc.c */ -#line 266 "griby.y" +#line 268 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 35: /* Line 1455 of yacc.c */ -#line 269 "griby.y" +#line 271 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 36: /* Line 1455 of yacc.c */ -#line 273 "griby.y" +#line 275 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 37: /* Line 1455 of yacc.c */ -#line 276 "griby.y" +#line 278 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"bytes",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 38: /* Line 1455 of yacc.c */ -#line 279 "griby.y" +#line 281 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"bytes",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 39: /* Line 1455 of yacc.c */ -#line 282 "griby.y" +#line 284 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ksec1expver",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 40: /* Line 1455 of yacc.c */ -#line 285 "griby.y" +#line 287 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 41: /* Line 1455 of yacc.c */ -#line 288 "griby.y" +#line 290 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 42: /* Line 1455 of yacc.c */ -#line 291 "griby.y" +#line 293 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 43: /* Line 1455 of yacc.c */ -#line 294 "griby.y" +#line 296 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 44: /* Line 1455 of yacc.c */ -#line 297 "griby.y" +#line 299 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(5) - (8)].str)); } break; case 45: /* Line 1455 of yacc.c */ -#line 300 "griby.y" +#line 302 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (12)].str),"codetable",(grib_yyvsp[(3) - (12)].lval), (grib_yyvsp[(6) - (12)].explist),(grib_yyvsp[(7) - (12)].explist),(grib_yyvsp[(12) - (12)].lval),NULL,(grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(5) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } break; @@ -2455,238 +2461,238 @@ grib_yyreduce: case 46: /* Line 1455 of yacc.c */ -#line 304 "griby.y" +#line 306 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 47: /* Line 1455 of yacc.c */ -#line 307 "griby.y" +#line 309 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (8)].str),"getenv",0,(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(1) - (8)].str)); } break; case 48: /* Line 1455 of yacc.c */ -#line 310 "griby.y" +#line 312 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"complex_codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(5) - (8)].str)); } break; case 49: /* Line 1455 of yacc.c */ -#line 313 "griby.y" +#line 315 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"complex_codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 50: /* Line 1455 of yacc.c */ -#line 316 "griby.y" +#line 318 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codeflag",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(5) - (8)].str)); } break; case 51: /* Line 1455 of yacc.c */ -#line 319 "griby.y" +#line 321 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (9)].str),"lookup",(grib_yyvsp[(3) - (9)].lval),(grib_yyvsp[(7) - (9)].explist),NULL,(grib_yyvsp[(9) - (9)].lval),NULL,NULL); free((grib_yyvsp[(5) - (9)].str)); } break; case 52: /* Line 1455 of yacc.c */ -#line 322 "griby.y" +#line 324 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"bit",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(2) - (7)].str)); } break; case 53: /* Line 1455 of yacc.c */ -#line 325 "griby.y" +#line 327 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[(2) - (2)].str)); } break; case 54: /* Line 1455 of yacc.c */ -#line 328 "griby.y" +#line 330 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[(2) - (2)].str)); } break; case 55: /* Line 1455 of yacc.c */ -#line 331 "griby.y" +#line 333 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ibmfloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 56: /* Line 1455 of yacc.c */ -#line 334 "griby.y" +#line 336 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ibmfloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL);free((grib_yyvsp[(4) - (6)].str)); free((grib_yyvsp[(2) - (6)].str)); } break; case 57: /* Line 1455 of yacc.c */ -#line 337 "griby.y" +#line 339 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ibmfloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str)); } break; case 58: /* Line 1455 of yacc.c */ -#line 340 "griby.y" +#line 342 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"position",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[(2) - (2)].str)); } break; case 59: /* Line 1455 of yacc.c */ -#line 343 "griby.y" +#line 345 "griby.y" { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"constant",0,(grib_yyvsp[(4) - (5)].explist),NULL,(grib_yyvsp[(5) - (5)].lval),NULL);free((grib_yyvsp[(2) - (5)].str)); } break; case 60: /* Line 1455 of yacc.c */ -#line 346 "griby.y" +#line 348 "griby.y" { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"transient",0,(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(5) - (5)].lval),NULL); free((grib_yyvsp[(2) - (5)].str)); } break; case 61: /* Line 1455 of yacc.c */ -#line 349 "griby.y" +#line 351 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ieeefloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL); free((grib_yyvsp[(2) - (4)].str)); } break; case 62: /* Line 1455 of yacc.c */ -#line 352 "griby.y" +#line 354 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ieeefloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL); free((grib_yyvsp[(4) - (6)].str));free((grib_yyvsp[(2) - (6)].str));} break; case 63: /* Line 1455 of yacc.c */ -#line 355 "griby.y" +#line 357 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ieeefloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str)); } break; case 64: /* Line 1455 of yacc.c */ -#line 358 "griby.y" +#line 360 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (2)].str)); } break; case 65: /* Line 1455 of yacc.c */ -#line 361 "griby.y" +#line 363 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (5)].str),"section_length",(grib_yyvsp[(3) - (5)].lval),NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (5)].str)); } break; case 66: /* Line 1455 of yacc.c */ -#line 364 "griby.y" +#line 366 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_message_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str)); } break; case 67: /* Line 1455 of yacc.c */ -#line 367 "griby.y" +#line 369 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_section4_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str)); } break; case 68: /* Line 1455 of yacc.c */ -#line 370 "griby.y" +#line 372 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"ksec",0,(grib_yyvsp[(3) - (3)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (3)].str)); } break; case 69: /* Line 1455 of yacc.c */ -#line 373 "griby.y" +#line 375 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"pad",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } break; case 70: /* Line 1455 of yacc.c */ -#line 376 "griby.y" +#line 378 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padto",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } break; case 71: /* Line 1455 of yacc.c */ -#line 379 "griby.y" +#line 381 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtoeven",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } break; case 72: /* Line 1455 of yacc.c */ -#line 382 "griby.y" +#line 384 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtomultiple",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } break; case 73: /* Line 1455 of yacc.c */ -#line 385 "griby.y" +#line 387 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"message",(grib_yyvsp[(3) - (6)].lval),0,0,(grib_yyvsp[(6) - (6)].lval),NULL,NULL); free((grib_yyvsp[(5) - (6)].str)); } break; case 74: /* Line 1455 of yacc.c */ -#line 388 "griby.y" +#line 390 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"section_padding",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL); free((grib_yyvsp[(2) - (3)].str)); } break; case 75: /* Line 1455 of yacc.c */ -#line 390 "griby.y" +#line 392 "griby.y" { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));} break; case 76: /* Line 1455 of yacc.c */ -#line 392 "griby.y" +#line 394 "griby.y" { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));} break; case 77: /* Line 1455 of yacc.c */ -#line 395 "griby.y" +#line 397 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].str),NULL,(grib_yyvsp[(5) - (5)].lval)); free((grib_yyvsp[(2) - (5)].str)); free((grib_yyvsp[(4) - (5)].str)); } break; case 78: /* Line 1455 of yacc.c */ -#line 398 "griby.y" +#line 400 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (2)].str),NULL,NULL,0); free((grib_yyvsp[(2) - (2)].str)); } break; case 79: /* Line 1455 of yacc.c */ -#line 401 "griby.y" +#line 403 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (7)].str),(grib_yyvsp[(6) - (7)].str),(grib_yyvsp[(2) - (7)].str),(grib_yyvsp[(7) - (7)].lval)); free((grib_yyvsp[(2) - (7)].str)); free((grib_yyvsp[(4) - (7)].str)); free((grib_yyvsp[(6) - (7)].str)); } @@ -2695,7 +2701,7 @@ grib_yyreduce: case 80: /* Line 1455 of yacc.c */ -#line 405 "griby.y" +#line 407 "griby.y" { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (4)].str),NULL,(grib_yyvsp[(2) - (4)].str),0); free((grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(4) - (4)].str)); } @@ -2704,21 +2710,21 @@ grib_yyreduce: case 81: /* Line 1455 of yacc.c */ -#line 409 "griby.y" +#line 411 "griby.y" { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(2) - (8)].str),(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(3) - (8)].str));} break; case 82: /* Line 1455 of yacc.c */ -#line 412 "griby.y" +#line 414 "griby.y" { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(5) - (10)].str),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),(grib_yyvsp[(2) - (10)].str)); free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(5) - (10)].str));free((grib_yyvsp[(2) - (10)].str));} break; case 83: /* Line 1455 of yacc.c */ -#line 415 "griby.y" +#line 417 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, @@ -2735,7 +2741,7 @@ grib_yyreduce: case 84: /* Line 1455 of yacc.c */ -#line 427 "griby.y" +#line 429 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, @@ -2752,7 +2758,7 @@ grib_yyreduce: case 85: /* Line 1455 of yacc.c */ -#line 439 "griby.y" +#line 441 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, @@ -2769,541 +2775,541 @@ grib_yyreduce: case 86: /* Line 1455 of yacc.c */ -#line 451 "griby.y" +#line 453 "griby.y" { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].explist));free((grib_yyvsp[(2) - (5)].str));} break; case 87: /* Line 1455 of yacc.c */ -#line 454 "griby.y" +#line 456 "griby.y" { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[(2) - (2)].explist));} break; case 88: /* Line 1455 of yacc.c */ -#line 457 "griby.y" +#line 459 "griby.y" { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[(3) - (4)].exp));} break; case 89: /* Line 1455 of yacc.c */ -#line 460 "griby.y" +#line 462 "griby.y" { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].lval)); free((grib_yyvsp[(2) - (3)].str));} break; case 90: /* Line 1455 of yacc.c */ -#line 462 "griby.y" +#line 464 "griby.y" { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(2) - (4)].str)); } break; case 91: /* Line 1455 of yacc.c */ -#line 463 "griby.y" +#line 465 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); } break; case 92: /* Line 1455 of yacc.c */ -#line 464 "griby.y" +#line 466 "griby.y" { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); } break; case 93: /* Line 1455 of yacc.c */ -#line 466 "griby.y" +#line 468 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); } break; case 94: /* Line 1455 of yacc.c */ -#line 469 "griby.y" +#line 471 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0,0); free((grib_yyvsp[(2) - (2)].str));} break; case 95: /* Line 1455 of yacc.c */ -#line 470 "griby.y" +#line 472 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); } break; case 96: /* Line 1455 of yacc.c */ -#line 471 "griby.y" +#line 473 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),0,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));} break; case 97: /* Line 1455 of yacc.c */ -#line 472 "griby.y" +#line 474 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[(3) - (4)].lval)); } break; case 98: /* Line 1455 of yacc.c */ -#line 473 "griby.y" +#line 475 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),1,0); free((grib_yyvsp[(2) - (2)].str));} break; case 99: /* Line 1455 of yacc.c */ -#line 474 "griby.y" +#line 476 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); } break; case 100: /* Line 1455 of yacc.c */ -#line 475 "griby.y" +#line 477 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),1,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));} break; case 101: /* Line 1455 of yacc.c */ -#line 476 "griby.y" +#line 478 "griby.y" { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); } break; case 102: /* Line 1455 of yacc.c */ -#line 478 "griby.y" +#line 480 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0); free((grib_yyvsp[(2) - (2)].str)); } break; case 103: /* Line 1455 of yacc.c */ -#line 479 "griby.y" +#line 481 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));} break; case 104: /* Line 1455 of yacc.c */ -#line 480 "griby.y" +#line 482 "griby.y" { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0); } break; case 105: /* Line 1455 of yacc.c */ -#line 484 "griby.y" +#line 486 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,0); } break; case 106: /* Line 1455 of yacc.c */ -#line 485 "griby.y" +#line 487 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),0); } break; case 107: /* Line 1455 of yacc.c */ -#line 486 "griby.y" +#line 488 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,1); } break; case 108: /* Line 1455 of yacc.c */ -#line 487 "griby.y" +#line 489 "griby.y" { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),1); } break; case 109: /* Line 1455 of yacc.c */ -#line 491 "griby.y" +#line 493 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (6)].exp),(grib_yyvsp[(5) - (6)].act),NULL); } break; case 110: /* Line 1455 of yacc.c */ -#line 492 "griby.y" +#line 494 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),NULL); } break; case 111: /* Line 1455 of yacc.c */ -#line 493 "griby.y" +#line 495 "griby.y" { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act)); } break; case 112: /* Line 1455 of yacc.c */ -#line 496 "griby.y" +#line 498 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); } break; case 113: /* Line 1455 of yacc.c */ -#line 497 "griby.y" +#line 499 "griby.y" { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); } break; case 115: /* Line 1455 of yacc.c */ -#line 501 "griby.y" +#line 503 "griby.y" { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } break; case 116: /* Line 1455 of yacc.c */ -#line 505 "griby.y" +#line 507 "griby.y" { (grib_yyval.explist) = NULL ;} break; case 117: /* Line 1455 of yacc.c */ -#line 506 "griby.y" +#line 508 "griby.y" { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;} break; case 118: /* Line 1455 of yacc.c */ -#line 509 "griby.y" +#line 511 "griby.y" { (grib_yyval.lval) = 0 ; } break; case 119: /* Line 1455 of yacc.c */ -#line 510 "griby.y" +#line 512 "griby.y" { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); } break; case 121: /* Line 1455 of yacc.c */ -#line 514 "griby.y" +#line 516 "griby.y" { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); } break; case 122: /* Line 1455 of yacc.c */ -#line 517 "griby.y" +#line 519 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; } break; case 123: /* Line 1455 of yacc.c */ -#line 518 "griby.y" +#line 520 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; } break; case 124: /* Line 1455 of yacc.c */ -#line 519 "griby.y" +#line 521 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; } break; case 125: /* Line 1455 of yacc.c */ -#line 520 "griby.y" +#line 522 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; } break; case 126: /* Line 1455 of yacc.c */ -#line 521 "griby.y" +#line 523 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; } break; case 127: /* Line 1455 of yacc.c */ -#line 522 "griby.y" +#line 524 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; } break; case 128: /* Line 1455 of yacc.c */ -#line 523 "griby.y" +#line 525 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } break; case 129: /* Line 1455 of yacc.c */ -#line 524 "griby.y" +#line 526 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; } break; case 130: /* Line 1455 of yacc.c */ -#line 525 "griby.y" +#line 527 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; } break; case 131: /* Line 1455 of yacc.c */ -#line 526 "griby.y" +#line 528 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_OVERRIDE; } break; case 132: /* Line 1455 of yacc.c */ -#line 527 "griby.y" +#line 529 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; } break; case 133: /* Line 1455 of yacc.c */ -#line 528 "griby.y" +#line 530 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; } break; case 134: /* Line 1455 of yacc.c */ -#line 529 "griby.y" +#line 531 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; } break; case 135: /* Line 1455 of yacc.c */ -#line 530 "griby.y" +#line 532 "griby.y" { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; } break; case 136: /* Line 1455 of yacc.c */ -#line 533 "griby.y" +#line 535 "griby.y" { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[(1) - (8)].str),(grib_yyvsp[(4) - (8)].exp),(grib_yyvsp[(7) - (8)].act)); free((grib_yyvsp[(1) - (8)].str)); } break; case 137: /* Line 1455 of yacc.c */ -#line 536 "griby.y" +#line 538 "griby.y" { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act)); } break; case 138: /* Line 1455 of yacc.c */ -#line 539 "griby.y" +#line 541 "griby.y" { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act)); } break; case 139: /* Line 1455 of yacc.c */ -#line 542 "griby.y" +#line 544 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0); free((grib_yyvsp[(2) - (6)].str)); } break; case 140: /* Line 1455 of yacc.c */ -#line 543 "griby.y" +#line 545 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),0); free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); } break; case 141: /* Line 1455 of yacc.c */ -#line 544 "griby.y" +#line 546 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } break; case 142: /* Line 1455 of yacc.c */ -#line 545 "griby.y" +#line 547 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (14)].str),0,(grib_yyvsp[(6) - (14)].str),0,(grib_yyvsp[(4) - (14)].str),(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),(grib_yyvsp[(14) - (14)].lval),0); free((grib_yyvsp[(2) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); } break; case 143: /* Line 1455 of yacc.c */ -#line 546 "griby.y" +#line 548 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),0); free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); } break; case 144: /* Line 1455 of yacc.c */ -#line 547 "griby.y" +#line 549 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),0); free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str)); free((grib_yyvsp[(2) - (14)].str));} break; case 145: /* Line 1455 of yacc.c */ -#line 548 "griby.y" +#line 550 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));} break; case 146: /* Line 1455 of yacc.c */ -#line 549 "griby.y" +#line 551 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),0); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); } break; case 147: /* Line 1455 of yacc.c */ -#line 550 "griby.y" +#line 552 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),0); free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); } break; case 148: /* Line 1455 of yacc.c */ -#line 551 "griby.y" +#line 553 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),1); free((grib_yyvsp[(2) - (6)].str)); } break; case 149: /* Line 1455 of yacc.c */ -#line 552 "griby.y" +#line 554 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),1); free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); } break; case 150: /* Line 1455 of yacc.c */ -#line 553 "griby.y" +#line 555 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),1); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } break; case 151: /* Line 1455 of yacc.c */ -#line 554 "griby.y" +#line 556 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),1); free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); } break; case 152: /* Line 1455 of yacc.c */ -#line 555 "griby.y" +#line 557 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),1); free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14)].str));} break; case 153: /* Line 1455 of yacc.c */ -#line 556 "griby.y" +#line 558 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),1); free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));} break; case 154: /* Line 1455 of yacc.c */ -#line 557 "griby.y" +#line 559 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),1); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); } break; case 155: /* Line 1455 of yacc.c */ -#line 558 "griby.y" +#line 560 "griby.y" { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),1); free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); } break; case 157: /* Line 1455 of yacc.c */ -#line 563 "griby.y" +#line 565 "griby.y" { (grib_yyval.concept_value) = (grib_yyvsp[(2) - (2)].concept_value); (grib_yyvsp[(2) - (2)].concept_value)->next = (grib_yyvsp[(1) - (2)].concept_value); } break; case 159: /* Line 1455 of yacc.c */ -#line 567 "griby.y" +#line 569 "griby.y" { (grib_yyval.case_value) = (grib_yyvsp[(2) - (2)].case_value); (grib_yyvsp[(2) - (2)].case_value)->next = (grib_yyvsp[(1) - (2)].case_value); } break; case 160: /* Line 1455 of yacc.c */ -#line 570 "griby.y" +#line 572 "griby.y" { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[(2) - (4)].explist),(grib_yyvsp[(4) - (4)].act)); } break; case 161: /* Line 1455 of yacc.c */ -#line 574 "griby.y" +#line 576 "griby.y" { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (10)].explist),(grib_yyvsp[(6) - (10)].case_value),(grib_yyvsp[(9) - (10)].act)); } break; case 162: /* Line 1455 of yacc.c */ -#line 575 "griby.y" +#line 577 "griby.y" { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (9)].explist),(grib_yyvsp[(6) - (9)].case_value),grib_action_create_noop(grib_parser_context,"continue")); } break; case 163: /* Line 1455 of yacc.c */ -#line 576 "griby.y" +#line 578 "griby.y" { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].case_value),0); } break; case 164: -/* Line 1455 of yacc.c */ -#line 579 "griby.y" - { - (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));} - break; - - case 165: - /* Line 1455 of yacc.c */ #line 581 "griby.y" { (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));} break; - case 166: + case 165: /* Line 1455 of yacc.c */ #line 583 "griby.y" + { + (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));} + break; + + case 166: + +/* Line 1455 of yacc.c */ +#line 585 "griby.y" { char buf[80]; sprintf(buf,"%ld",(long)(grib_yyvsp[(1) - (5)].lval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));} break; @@ -3311,7 +3317,7 @@ grib_yyreduce: case 167: /* Line 1455 of yacc.c */ -#line 585 "griby.y" +#line 587 "griby.y" { char buf[80]; sprintf(buf,"%g",(double)(grib_yyvsp[(1) - (5)].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));} break; @@ -3319,259 +3325,259 @@ grib_yyreduce: case 169: /* Line 1455 of yacc.c */ -#line 590 "griby.y" +#line 592 "griby.y" { (grib_yyvsp[(1) - (2)].concept_condition)->next = (grib_yyvsp[(2) - (2)].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[(1) - (2)].concept_condition); } break; case 170: /* Line 1455 of yacc.c */ -#line 593 "griby.y" +#line 595 "griby.y" { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); } break; case 171: /* Line 1455 of yacc.c */ -#line 596 "griby.y" +#line 598 "griby.y" { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str)); free((grib_yyvsp[(1) - (1)].str)); } break; case 172: /* Line 1455 of yacc.c */ -#line 597 "griby.y" +#line 599 "griby.y" { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str)); free((grib_yyvsp[(1) - (1)].str)); } break; case 174: /* Line 1455 of yacc.c */ -#line 601 "griby.y" +#line 603 "griby.y" { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].lval)); } break; case 175: /* Line 1455 of yacc.c */ -#line 602 "griby.y" +#line 604 "griby.y" { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].dval)); /* TODO: change to new_float_expression*/} break; case 176: /* Line 1455 of yacc.c */ -#line 604 "griby.y" +#line 606 "griby.y" { (grib_yyval.exp) = NULL; } break; case 177: /* Line 1455 of yacc.c */ -#line 605 "griby.y" +#line 607 "griby.y" { (grib_yyval.exp) = new_true_expression(grib_parser_context); } break; case 178: /* Line 1455 of yacc.c */ -#line 606 "griby.y" +#line 608 "griby.y" { (grib_yyval.exp) = (grib_yyvsp[(2) - (3)].exp); } break; case 179: /* Line 1455 of yacc.c */ -#line 607 "griby.y" +#line 609 "griby.y" { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[(2) - (2)].exp)); } break; case 180: /* Line 1455 of yacc.c */ -#line 608 "griby.y" +#line 610 "griby.y" { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].str),NULL); free((grib_yyvsp[(1) - (3)].str));} break; case 181: /* Line 1455 of yacc.c */ -#line 609 "griby.y" +#line 611 "griby.y" { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].explist)); free((grib_yyvsp[(1) - (4)].str));} break; case 182: /* Line 1455 of yacc.c */ -#line 613 "griby.y" +#line 615 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_pow,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 184: /* Line 1455 of yacc.c */ -#line 617 "griby.y" +#line 619 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 185: /* Line 1455 of yacc.c */ -#line 618 "griby.y" +#line 620 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 186: /* Line 1455 of yacc.c */ -#line 619 "griby.y" +#line 621 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 187: /* Line 1455 of yacc.c */ -#line 620 "griby.y" +#line 622 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 188: /* Line 1455 of yacc.c */ -#line 621 "griby.y" +#line 623 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 190: /* Line 1455 of yacc.c */ -#line 625 "griby.y" +#line 627 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 191: /* Line 1455 of yacc.c */ -#line 626 "griby.y" +#line 628 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_sub,&grib_op_sub_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 193: /* Line 1455 of yacc.c */ -#line 630 "griby.y" +#line 632 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 194: /* Line 1455 of yacc.c */ -#line 632 "griby.y" +#line 634 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 195: /* Line 1455 of yacc.c */ -#line 633 "griby.y" +#line 635 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 196: /* Line 1455 of yacc.c */ -#line 634 "griby.y" +#line 636 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 197: /* Line 1455 of yacc.c */ -#line 635 "griby.y" +#line 637 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 198: /* Line 1455 of yacc.c */ -#line 636 "griby.y" +#line 638 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 199: /* Line 1455 of yacc.c */ -#line 637 "griby.y" +#line 639 "griby.y" { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 200: /* Line 1455 of yacc.c */ -#line 642 "griby.y" +#line 644 "griby.y" { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[(2) - (2)].exp)); } break; case 202: /* Line 1455 of yacc.c */ -#line 646 "griby.y" +#line 648 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_and,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 204: /* Line 1455 of yacc.c */ -#line 650 "griby.y" +#line 652 "griby.y" { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_or,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp));} break; case 209: /* Line 1455 of yacc.c */ -#line 664 "griby.y" +#line 666 "griby.y" { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); } break; case 210: /* Line 1455 of yacc.c */ -#line 665 "griby.y" +#line 667 "griby.y" { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);} break; case 212: /* Line 1455 of yacc.c */ -#line 669 "griby.y" +#line 671 "griby.y" { (grib_yyvsp[(1) - (2)].rule_entry)->next = (grib_yyvsp[(2) - (2)].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[(1) - (2)].rule_entry); } break; case 213: /* Line 1455 of yacc.c */ -#line 672 "griby.y" +#line 674 "griby.y" { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[(1) - (1)].rule_entry)); } break; case 214: /* Line 1455 of yacc.c */ -#line 676 "griby.y" +#line 678 "griby.y" { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].rule_entry)); } break; case 216: /* Line 1455 of yacc.c */ -#line 680 "griby.y" +#line 682 "griby.y" { (grib_yyvsp[(1) - (2)].rules)->next = (grib_yyvsp[(2) - (2)].rules); (grib_yyval.rules) = (grib_yyvsp[(1) - (2)].rules); } break; /* Line 1455 of yacc.c */ -#line 3575 "y.tab.c" +#line 3581 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", grib_yyr1[grib_yyn], &grib_yyval, &grib_yyloc); @@ -3783,7 +3789,7 @@ grib_yyreturn: /* Line 1675 of yacc.c */ -#line 684 "griby.y" +#line 686 "griby.y" static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_value *s) diff --git a/src/grib_yacc.h b/src/grib_yacc.h index c0200e784..6e50dba17 100644 --- a/src/grib_yacc.h +++ b/src/grib_yacc.h @@ -117,16 +117,18 @@ NE = 333, GE = 334, LE = 335, - BIT = 336, - BITOFF = 337, - AND = 338, - OR = 339, - NOT = 340, - IS = 341, - IDENT = 342, - STRING = 343, - INTEGER = 344, - FLOAT = 345 + LT = 336, + GT = 337, + BIT = 338, + BITOFF = 339, + AND = 340, + OR = 341, + NOT = 342, + IS = 343, + IDENT = 344, + STRING = 345, + INTEGER = 346, + FLOAT = 347 }; #endif /* Tokens. */ @@ -208,16 +210,18 @@ #define NE 333 #define GE 334 #define LE 335 -#define BIT 336 -#define BITOFF 337 -#define AND 338 -#define OR 339 -#define NOT 340 -#define IS 341 -#define IDENT 342 -#define STRING 343 -#define INTEGER 344 -#define FLOAT 345 +#define LT 336 +#define GT 337 +#define BIT 338 +#define BITOFF 339 +#define AND 340 +#define OR 341 +#define NOT 342 +#define IS 343 +#define IDENT 344 +#define STRING 345 +#define INTEGER 346 +#define FLOAT 347 @@ -246,7 +250,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 250 "y.tab.h" +#line 254 "y.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/gribl.l b/src/gribl.l index 8b09af438..aa8a27004 100644 --- a/src/gribl.l +++ b/src/gribl.l @@ -59,7 +59,9 @@ FLOAT {SIGN}?{DIGIT}+\.{DIGIT}+{EXP}? "==" return EQ ; ">=" return GE ; +">" return GT ; "<=" return LE ; +"<" return LT ; "!=" return NE ; "<>" return NE ; "bit" return BIT ; diff --git a/src/griby.y b/src/griby.y index e8b65de7d..224c7b64b 100644 --- a/src/griby.y +++ b/src/griby.y @@ -134,6 +134,8 @@ static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_va %token NE %token GE %token LE +%token LT +%token GT %token BIT %token BITOFF @@ -627,13 +629,13 @@ term : term '+' factor { $$ = new_binop_expression(grib_parser_cont | factor ; -condition : condition '>' term { $$ = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,$1,$3); } - /* | condition '=' term { $$ = new_binop_expression(grib_parser_context,&grib_op_eq,$1,$3); } */ +condition : condition GT term { $$ = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,$1,$3); } + /* | condition '=' term { $$ = new_binop_expression(grib_parser_context,&grib_op_eq,$1,$3); } */ | condition EQ term { $$ = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,$1,$3); } - | condition '<' term { $$ = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,$1,$3); } - | condition GE term { $$ = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,$1,$3); } - | condition LE term { $$ = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,$1,$3); } - | condition NE term { $$ = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,$1,$3); } + | condition LT term { $$ = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,$1,$3); } + | condition GE term { $$ = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,$1,$3); } + | condition LE term { $$ = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,$1,$3); } + | condition NE term { $$ = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,$1,$3); } | string_or_ident IS string_or_ident { $$ = new_string_compare_expression(grib_parser_context,$1,$3); } /* | condition IN term { $$ = new_binop_expression(grib_parser_context,grib_op_pow,$1,$3); } diff --git a/tests/filter.sh b/tests/filter.sh index cedee9174..642499bf6 100755 --- a/tests/filter.sh +++ b/tests/filter.sh @@ -72,6 +72,36 @@ ${tools_dir}/grib_filter -o temp.grib2 temp.filt $GRIB_SAMPLES_PATH/GRIB1.tmpl result=`${tools_dir}/grib_get -p typeOfFirstFixedSurface,NV,nlev temp.grib2` [ "$result" = "150 6 41" ] -rm -f temp.grib2 temp.filt -rm -f ${data_dir}/formatint.rules +# GRIB-394: grib_filter arithmetic operators not correct for floating point values +################################################################################### +cat > ${data_dir}/binop.rules < val_lower) { + print "OK [referenceValue] > [val_lower]"; +} +else { + print "***ERROR: [referenceValue] <= [val_lower]"; + assert(0); +} +transient val_higher=209.99; +if (referenceValue < val_higher) { + print "OK [referenceValue] < [val_higher]"; +} +else { + print "***ERROR: [referenceValue] >= [val_higher]"; + assert(0); +} +EOF +${tools_dir}/grib_filter ${data_dir}/binop.rules $GRIB_SAMPLES_PATH/gg_sfc_grib1.tmpl >/dev/null + +rm -f temp.grib2 temp.filt +rm -f ${data_dir}/formatint.rules ${data_dir}/binop.rules