diff --git a/DynareBison.yy b/DynareBison.yy index 3dbc60a97e1bcb61bd080582c70dc59b4d7df3c3..79a7bafd26c1f94df8b85ed76d4c2e2fb55295fe 100644 --- a/DynareBison.yy +++ b/DynareBison.yy @@ -134,7 +134,7 @@ class ParsingDriver; %token ALPHA_RMSE ALPHA2_RMSE TRANS_IDENT /* end of GSA analysis*/ -%type <node_val> expression +%type <node_val> expression expression_or_empty %type <node_val> equation hand_side model_var %type <string_val> signed_float signed_integer prior %type <string_val> filename @@ -376,6 +376,10 @@ comma_expression : expression { driver.add_unknown_function_arg($3); } ; +expression_or_empty : {$$ = driver.add_nan_constant();} + | expression + ; + initval : INITVAL ';' initval_list END { driver.end_initval(); } @@ -738,13 +742,13 @@ estimated_elem2 : prior COMMA estimated_elem3 driver.estim_params.prior = *$1; delete $1; } - | expression COMMA prior COMMA estimated_elem3 + | expression_or_empty COMMA prior COMMA estimated_elem3 { driver.estim_params.init_val = $1; driver.estim_params.prior = *$3; delete $3; } - | expression COMMA expression COMMA expression COMMA prior COMMA estimated_elem3 + | expression_or_empty COMMA expression_or_empty COMMA expression_or_empty COMMA prior COMMA estimated_elem3 { driver.estim_params.init_val = $1; driver.estim_params.low_bound = $3; @@ -756,7 +760,7 @@ estimated_elem2 : prior COMMA estimated_elem3 { driver.estim_params.init_val = $1; } - | expression COMMA expression COMMA expression + | expression_or_empty COMMA expression_or_empty COMMA expression_or_empty { driver.estim_params.init_val = $1; driver.estim_params.low_bound = $3; @@ -764,25 +768,25 @@ estimated_elem2 : prior COMMA estimated_elem3 } ; -estimated_elem3 : expression COMMA expression +estimated_elem3 : expression_or_empty COMMA expression_or_empty { driver.estim_params.mean = $1; driver.estim_params.std = $3; } - | expression COMMA expression COMMA expression + | expression_or_empty COMMA expression_or_empty COMMA expression_or_empty { driver.estim_params.mean = $1; driver.estim_params.std = $3; driver.estim_params.p3 = $5; } - | expression COMMA expression COMMA expression COMMA expression + | expression_or_empty COMMA expression_or_empty COMMA expression_or_empty COMMA expression_or_empty { driver.estim_params.mean = $1; driver.estim_params.std = $3; driver.estim_params.p3 = $5; driver.estim_params.p4 = $7; } - | expression COMMA expression COMMA expression COMMA expression COMMA expression + | expression_or_empty COMMA expression_or_empty COMMA expression_or_empty COMMA expression_or_empty COMMA expression { driver.estim_params.mean = $1; driver.estim_params.std = $3;