From e22aa1c16258fc48bcfb53fde4a098899fce2d12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Thu, 8 Nov 2018 15:01:25 +0100
Subject: [PATCH] Compatibility issue with Bison 3.2

---
 src/DynareBison.yy | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/DynareBison.yy b/src/DynareBison.yy
index 5a16ad12..e3e710c4 100644
--- a/src/DynareBison.yy
+++ b/src/DynareBison.yy
@@ -34,6 +34,12 @@ class ParsingDriver;
 %code requires {
 #include "ExprNode.hh"
 #include "CodeInterpreter.hh"
+
+/* Bison 3.2 passes semantic types through a macro, and commas in parametric
+   types are interpreted as macro arguments, leading to a compilation error.
+   Use type aliases to workaround the problem. */
+using pair_2strings = pair<string,string>;
+using tuple_4strings = tuple<string,string,string,string>;
 }
 
 %parse-param { ParsingDriver &driver }
@@ -177,14 +183,15 @@ class ParsingDriver;
 %type <string> range vec_value_w_inf vec_value_1_w_inf
 %type <string> integer_range signed_integer_range
 %type <string> sub_sampling_options list_sub_sampling_option
-%type <pair<string,string>> named_var_elem subsamples_eq_opt calibration_range integer_range_w_inf
-%type <vector<pair<string,string>>> named_var named_var_1
 %type <SymbolType> change_type_arg
 %type <vector<string>> vec_str vec_str_1
 %type <vector<string>> change_type_var_list
 %type <vector<int>> vec_int_elem vec_int_1 vec_int vec_int_number
 %type <PriorDistributions> prior_pdf prior_distribution
-%type <tuple<string,string,string,string>> prior_eq_opt options_eq_opt
+// The following types use aliases, see comment above in the file
+%type <pair_2strings> named_var_elem subsamples_eq_opt calibration_range integer_range_w_inf
+%type <vector<pair_2strings>> named_var named_var_1
+%type <tuple_4strings> prior_eq_opt options_eq_opt
 %%
 
 %start statement_list;
-- 
GitLab