From 30aaf93ca74d900469a176e5800bb6dd85803d76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Wed, 14 Aug 2019 10:38:25 +0200
Subject: [PATCH] Bison 3.2 now generates a default semantic action with
 variants

The minimal required version of Bison is bumped to 3.2, so that we can rely on
those default actions.
---
 src/DynareBison.yy  | 46 ++-------------------------------------------
 src/macro/Parser.yy | 19 +++----------------
 2 files changed, 5 insertions(+), 60 deletions(-)

diff --git a/src/DynareBison.yy b/src/DynareBison.yy
index 86956e8a..6d24abd1 100644
--- a/src/DynareBison.yy
+++ b/src/DynareBison.yy
@@ -19,7 +19,7 @@
  */
 
 %language "c++"
-%require "3.0"
+%require "3.2"
 %defines
 %define api.value.type variant
 %define api.namespace {Dynare}
@@ -579,9 +579,7 @@ named_var_1 : '(' named_var_elem
             ;
 
 named_var : named_var_1 ')'
-            { $$ = $1; }
           | named_var_1 COMMA ')'
-            { $$ = $1; }
           ;
 
 var_list : var_list symbol
@@ -837,7 +835,6 @@ comma_expression : expression
 expression_or_empty : %empty
                       { $$ = driver.add_nan_constant(); }
                     | expression
-                      { $$ = $1; }
 	            ;
 
 initval : INITVAL ';' initval_list END ';'
@@ -1541,13 +1538,10 @@ signed_integer : PLUS INT_NUMBER
                    $$.insert(0, "-");
                  }
                | INT_NUMBER
-                 { $$ = $1; }
                ;
 
 non_negative_number : INT_NUMBER
-                      { $$ = $1; }
                     | FLOAT_NUMBER
-                      { $$ = $1; }
                     ;
 
 signed_number : PLUS non_negative_number
@@ -1558,7 +1552,6 @@ signed_number : PLUS non_negative_number
                  $$.insert(0, "-");
                }
               | non_negative_number
-               { $$ = $1; }
               ;
 
 signed_inf : PLUS INF_CONSTANT
@@ -1570,9 +1563,7 @@ signed_inf : PLUS INF_CONSTANT
            ;
 
 signed_number_w_inf : signed_inf
-                      { $$ = $1; }
                     | signed_number
-                      { $$ = $1; }
                     ;
 
 estimated_params : ESTIMATED_PARAMS ';' estimated_list END ';' { driver.estimated_params(); };
@@ -1789,10 +1780,8 @@ prior_pdf : BETA_PDF
           ;
 
 date_str : DATES
-           { $$ = $1; }
 
 date_expr : date_str
-            { $$ = $1; }
           | date_expr PLUS INT_NUMBER
             { $$ = $1 + '+' + $3; }
           ;
@@ -2099,7 +2088,6 @@ list_sub_sampling_option : QUOTED_STRING COMMA QUOTED_STRING
                          ;
 
 sub_sampling_options : list_sub_sampling_option
-                       { $$ = $1; }
                      | sub_sampling_options COMMA list_sub_sampling_option
                        { $$ = $1 + ',' + $3; }
                      ;
@@ -2259,9 +2247,7 @@ model_comparison : MODEL_COMPARISON mc_filename_list ';'
                  ;
 
 filename : symbol
-           { $$ = $1; }
          | QUOTED_STRING
-           { $$ = $1; }
          ;
 
 parallel_local_filename_list : filename
@@ -3781,7 +3767,6 @@ vec_int_number : INT_NUMBER
                ;
 
 vec_int_elem : vec_int_number
-               { $$ = $1; }
              | INT_NUMBER ':' INT_NUMBER
                {
                  $$ = vector<int>{};
@@ -3807,9 +3792,7 @@ vec_int_1 : '[' vec_int_elem
           ;
 
 vec_int : vec_int_1 ']'
-          { $$ = $1; }
         | vec_int_1 COMMA ']'
-          { $$ = $1; }
         ;
 
 vec_str_1 : '[' QUOTED_STRING
@@ -3829,9 +3812,7 @@ vec_str_1 : '[' QUOTED_STRING
           ;
 
 vec_str : vec_str_1 ']'
-          { $$ = $1; }
         | vec_str_1 COMMA ']'
-          { $$ = $1; }
         ;
 
 vec_value_1 : '[' signed_number
@@ -3853,13 +3834,12 @@ vec_value : vec_value_1 ']'
 vec_value_list : vec_value_list COMMA vec_value
                  { $$ = $1 + ',' + $3; }
                | vec_value
-                 { $$ = $1; }
                ;
 
 vec_of_vec_value : '[' vec_value_list ']'
                    { $$ = $2; }
                  | vec_value
-                   { $$ = $1; };
+                 ;
 
 vec_value_1_w_inf : '[' signed_number_w_inf
                     { $$ = '[' + $2; }
@@ -3871,52 +3851,30 @@ vec_value_w_inf : vec_value_1_w_inf ']'
                   { $$ = $1 + ']'; };
 
 symbol : NAME
-         { $$ = $1; }
        | ALPHA
-         { $$ = $1; }
        | BETA
-         { $$ = $1; }
        | NINV
-         { $$ = $1; }
        | ABAND
-         { $$ = $1; }
        | CMS
-         { $$ = $1; }
        | NCMS
-         { $$ = $1; }
        | CNUM
-         { $$ = $1; }
        | GAMMA
-         { $$ = $1; }
        | INV_GAMMA
-         { $$ = $1; }
        | INV_GAMMA1
-         { $$ = $1; }
        | INV_GAMMA2
-         { $$ = $1; }
        | NORMAL
-         { $$ = $1; }
        | UNIFORM
-         { $$ = $1; }
        | EPS
-         { $$ = $1; }
        | PDF
-         { $$ = $1; }
        | FIG
-         { $$ = $1; }
        | NONE
-         { $$ = $1; }
        | DR
-         { $$ = $1; }
        | PRIOR
-         { $$ = $1; }
        ;
 
 
 number : INT_NUMBER
-         { $$ = $1; }
        | FLOAT_NUMBER
-         { $$ = $1; }
        ;
 %%
 
diff --git a/src/macro/Parser.yy b/src/macro/Parser.yy
index d429ce61..6bde33d2 100644
--- a/src/macro/Parser.yy
+++ b/src/macro/Parser.yy
@@ -19,7 +19,7 @@
  */
 
 %language "c++"
-%require "3.0"
+%require "3.2"
 %defines
 %define api.value.type variant
 %define api.namespace {Tokenizer}
@@ -90,8 +90,7 @@ using namespace macro;
 %token <string> NAME TEXT QUOTED_STRING NUMBER EOL
 
 %type <DirectivePtr> statement
-%type <DirectivePtr> directive directive_one_line directive_multiline for if ifdef ifndef text
-%type <EvalPtr> eval
+%type <DirectivePtr> directive directive_one_line directive_multiline for if ifdef ifndef text eval
 %type <ExpressionPtr> primary_expr oper_expr colon_expr expr
 %type <FunctionPtr> function
 %type <VariablePtr> symbol
@@ -114,17 +113,12 @@ statements : statement
            ;
 
 statement : directive
-            { $$ = $1; }
           | text
-            { $$ = $1; }
           | eval
-            { $$ = $1; }
           ;
 
 directive : directive_one_line EOL
-            { $$ = $1; }
           | directive_multiline EOL
-            { $$ = $1; }
           ;
 
 directive_one_line : INCLUDE expr
@@ -146,13 +140,9 @@ directive_one_line : INCLUDE expr
                    ;
 
 directive_multiline : for
-                      { $$ = $1; }
                     | if
-                      { $$ = $1; }
                     | ifdef
-                      { $$ = $1; }
                     | ifndef
-                      { $$ = $1; }
                     ;
 
 for : FOR { driver.pushContext(); } NAME IN expr EOL statements ENDFOR
@@ -290,7 +280,7 @@ tuple_comma_expr : %empty
 primary_expr : LPAREN expr RPAREN
                { $$ = $2; }
              | symbol
-               { $$ = $1; }
+               { $$ = $1; } // Explicit rule needed for type conversion
              | NAME LPAREN comma_expr RPAREN
                { $$ = make_shared<Function>($1, $3, driver.env, @$); }
              | TRUE
@@ -388,7 +378,6 @@ primary_expr : LPAREN expr RPAREN
              ;
 
 oper_expr : primary_expr
-            { $$ = $1; }
           | LPAREN BOOL RPAREN oper_expr %prec CAST
             { $$ = make_shared<UnaryOp>(codes::UnaryOp::cast_bool, $4, driver.env, @$); }
           | LPAREN REAL RPAREN oper_expr %prec CAST
@@ -428,9 +417,7 @@ colon_expr : oper_expr COLON oper_expr
            ;
 
 expr : oper_expr
-       { $$ = $1; }
      | colon_expr
-       { $$ = $1; }
      | expr EQUAL_EQUAL expr
        { $$ = make_shared<BinaryOp>(codes::BinaryOp::equal_equal, $1, $3, driver.env, @$); }
      | expr NOT_EQUAL expr
-- 
GitLab