diff --git a/src/CodeInterpreter.hh b/src/CodeInterpreter.hh
index ef8cfdc05f2a9fa627db06f8bb1f58ce70655c19..28fec2d5abdd569140f09adc345ac443c2efe613 100644
--- a/src/CodeInterpreter.hh
+++ b/src/CodeInterpreter.hh
@@ -240,18 +240,18 @@ enum external_function_type
     ExternalFunctionSecondDerivative
   };
 
-enum PriorDistributions
-  {
-    eNoShape = 0,
-    eBeta = 1,
-    eGamma = 2,
-    eNormal = 3,
-    eInvGamma = 4,
-    eInvGamma1 = 4,
-    eUniform = 5,
-    eInvGamma2 = 6,
-    eDirichlet = 7,
-    eWeibull = 8
+enum class PriorDistributions
+  {
+    noShape = 0,
+    beta = 1,
+    gamma = 2,
+    normal = 3,
+    invGamma = 4,
+    invGamma1 = 4,
+    uniform = 5,
+    invGamma2 = 6,
+    dirichlet = 7,
+    weibull = 8
   };
 
 enum class NodeTreeReference
diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc
index 64c29275abf83f60aee1cef4948b57b3354236b5..63ad33e17c36c057cf340a5476aed884c7f06763 100644
--- a/src/ComputingTasks.cc
+++ b/src/ComputingTasks.cc
@@ -1459,7 +1459,7 @@ EstimatedParamsStatement::checkPass(ModFileStructure &mod_file_struct, WarningCo
         mod_file_struct.dsge_prior_weight_in_estimated_params = true;
 
       // Handle case of degenerate beta prior
-      if (it.prior == eBeta)
+      if (it.prior == PriorDistributions::beta)
         try
           {
             if (it.mean->eval(eval_context_t()) == 0.5
@@ -1553,7 +1553,7 @@ EstimatedParamsStatement::writeOutput(ostream &output, const string &basename, b
       output << ", ";
       it.up_bound->writeOutput(output);
       output << ", "
-             << it.prior << ", ";
+             << static_cast<int>(it.prior) << ", ";
       it.mean->writeOutput(output);
       output << ", ";
       it.std->writeOutput(output);
@@ -1598,7 +1598,7 @@ EstimatedParamsStatement::writeJsonOutput(ostream &output) const
       output << "\", \"upper_bound\": \"";
       it->up_bound->writeJsonOutput(output, {}, {});
       output << "\", \"prior_distribution\": "
-             << it->prior
+             << static_cast<int>(it->prior)
              << ", \"mean\": \"";
       it->mean->writeJsonOutput(output, {}, {});
       output << "\", \"std\": \"";
@@ -3711,7 +3711,7 @@ JointPriorStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
       exit(EXIT_FAILURE);
     }
 
-  if (prior_shape == eNoShape)
+  if (prior_shape == PriorDistributions::noShape)
     {
       cerr << "ERROR: You must pass the shape option to the prior statement." << endl;
       exit(EXIT_FAILURE);
@@ -3760,8 +3760,8 @@ JointPriorStatement::writeOutput(ostream &output, const string &basename, bool m
   writeOutputHelper(output, "median", lhs_field);
   writeOutputHelper(output, "mode", lhs_field);
 
-  assert(prior_shape != eNoShape);
-  output << lhs_field << ".shape = " << prior_shape << ";" << endl;
+  assert(prior_shape != PriorDistributions::noShape);
+  output << lhs_field << ".shape = " << static_cast<int>(prior_shape) << ";" << endl;
 
   writeOutputHelper(output, "shift", lhs_field);
   writeOutputHelper(output, "stdev", lhs_field);
@@ -3821,31 +3821,31 @@ JointPriorStatement::writeJsonOutput(ostream &output) const
   output << ", \"shape\": ";
   switch (prior_shape)
     {
-    case eBeta:
+    case PriorDistributions::beta:
       output << "\"beta\"";
       break;
-    case eGamma:
+    case PriorDistributions::gamma:
       output << "\"gamma\"";
       break;
-    case eNormal:
+    case PriorDistributions::normal:
       output << "\"normal\"";
       break;
-    case eInvGamma:
+    case PriorDistributions::invGamma:
       output << "\"inv_gamma\"";
       break;
-    case eUniform:
+    case PriorDistributions::uniform:
       output << "\"uniform\"";
       break;
-    case eInvGamma2:
+    case PriorDistributions::invGamma2:
       output << "\"inv_gamma2\"";
       break;
-    case eDirichlet:
+    case PriorDistributions::dirichlet:
       output << "\"dirichlet\"";
       break;
-    case eWeibull:
+    case PriorDistributions::weibull:
       output << "\"weibull\"";
       break;
-    case eNoShape:
+    case PriorDistributions::noShape:
       cerr << "Impossible case." << endl;
       exit(EXIT_FAILURE);
     }
@@ -3871,7 +3871,7 @@ BasicPriorStatement::BasicPriorStatement(string name_arg,
 void
 BasicPriorStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings)
 {
-  if (prior_shape == eNoShape)
+  if (prior_shape == PriorDistributions::noShape)
     {
       cerr << "ERROR: You must pass the shape option to the prior statement." << endl;
       exit(EXIT_FAILURE);
@@ -3934,8 +3934,8 @@ BasicPriorStatement::writeCommonOutput(ostream &output, const string &lhs_field)
   writeCommonOutputHelper(output, "median", lhs_field);
   writeCommonOutputHelper(output, "mode", lhs_field);
 
-  assert(prior_shape != eNoShape);
-  output << lhs_field << ".shape = " << prior_shape << ";" << endl;
+  assert(prior_shape != PriorDistributions::noShape);
+  output << lhs_field << ".shape = " << static_cast<int>(prior_shape) << ";" << endl;
 
   writeCommonOutputHelper(output, "shift", lhs_field);
   writeCommonOutputHelper(output, "stdev", lhs_field);
@@ -4034,32 +4034,32 @@ BasicPriorStatement::writeCShape(ostream &output) const
   output << "shape = ";
   switch (prior_shape)
     {
-    case eBeta:
+    case PriorDistributions::beta:
       output << "\"beta\";" << endl;
       break;
-    case eGamma:
+    case PriorDistributions::gamma:
       output << "\"gamma\";" << endl;
       break;
-    case eNormal:
+    case PriorDistributions::normal:
       output << "\"normal\";" << endl;
       break;
-    case eInvGamma:
+    case PriorDistributions::invGamma:
       output << "\"inv_gamma\";" << endl;
       break;
-    case eUniform:
+    case PriorDistributions::uniform:
       output << "\"uniform\";" << endl;
       break;
-    case eInvGamma2:
+    case PriorDistributions::invGamma2:
       output << "\"inv_gamma2\";" << endl;
       break;
-    case eDirichlet:
+    case PriorDistributions::dirichlet:
       output << "\"dirichlet\";" << endl;
       break;
-    case eWeibull:
+    case PriorDistributions::weibull:
       output << "\"weibull\";" << endl;
       break;
-    case eNoShape:
-      assert(prior_shape != eNoShape);
+    case PriorDistributions::noShape:
+      assert(prior_shape != PriorDistributions::noShape);
     }
 }
 
@@ -4069,32 +4069,32 @@ BasicPriorStatement::writeJsonShape(ostream &output) const
   output << "\"shape\": ";
   switch (prior_shape)
     {
-    case eBeta:
+    case PriorDistributions::beta:
       output << "\"beta\"";
       break;
-    case eGamma:
+    case PriorDistributions::gamma:
       output << "\"gamma\"";
       break;
-    case eNormal:
+    case PriorDistributions::normal:
       output << "\"normal\"";
       break;
-    case eInvGamma:
+    case PriorDistributions::invGamma:
       output << "\"inv_gamma\"";
       break;
-    case eUniform:
+    case PriorDistributions::uniform:
       output << "\"uniform\"";
       break;
-    case eInvGamma2:
+    case PriorDistributions::invGamma2:
       output << "\"inv_gamma2\"";
       break;
-    case eDirichlet:
+    case PriorDistributions::dirichlet:
       output << "\"dirichlet\"";
       break;
-    case eWeibull:
+    case PriorDistributions::weibull:
       output << "\"weibull\"";
       break;
-    case eNoShape:
-      assert(prior_shape != eNoShape);
+    case PriorDistributions::noShape:
+      assert(prior_shape != PriorDistributions::noShape);
     }
 }
 
diff --git a/src/ComputingTasks.hh b/src/ComputingTasks.hh
index 3a98e09c83bc1ac2faf23f0bd6667934fdbd7563..2e696da6d79392560ee23696d2cbe301f69cf973 100644
--- a/src/ComputingTasks.hh
+++ b/src/ComputingTasks.hh
@@ -464,7 +464,7 @@ public:
     type = 0;
     name = "";
     name2 = "";
-    prior = eNoShape;
+    prior = PriorDistributions::noShape;
     init_val = datatree.NaN;
     low_bound = datatree.MinusInfinity;
     up_bound = datatree.Infinity;
diff --git a/src/DynareBison.yy b/src/DynareBison.yy
index ff910d4e44814553ef1de45cf62b51a92f36b786..8c01230c1c49edc2e3c835ac6f8e9898f17c0fbe 100644
--- a/src/DynareBison.yy
+++ b/src/DynareBison.yy
@@ -1697,41 +1697,41 @@ osr_bounds_elem : symbol COMMA expression COMMA expression ';'
                 ;
 
 prior_distribution : BETA
-                     { $$ = eBeta; }
+                     { $$ = PriorDistributions::beta; }
                    | GAMMA
-                     { $$ = eGamma; }
+                     { $$ = PriorDistributions::gamma; }
                    | NORMAL
-                     { $$ = eNormal; }
+                     { $$ = PriorDistributions::normal; }
                    | INV_GAMMA
-                     { $$ = eInvGamma; }
+                     { $$ = PriorDistributions::invGamma; }
                    | INV_GAMMA1
-                     { $$ = eInvGamma1; }
+                     { $$ = PriorDistributions::invGamma1; }
                    | UNIFORM
-                     { $$ = eUniform; }
+                     { $$ = PriorDistributions::uniform; }
                    | INV_GAMMA2
-                     { $$ = eInvGamma2; }
+                     { $$ = PriorDistributions::invGamma2; }
                    | DIRICHLET
-                     { $$ = eDirichlet; }
+                     { $$ = PriorDistributions::dirichlet; }
                    | WEIBULL
-                     { $$ = eWeibull; }
+                     { $$ = PriorDistributions::weibull; }
                    ;
 
 prior_pdf : BETA_PDF
-            { $$ = eBeta; }
+            { $$ = PriorDistributions::beta; }
           | GAMMA_PDF
-            { $$ = eGamma; }
+            { $$ = PriorDistributions::gamma; }
           | NORMAL_PDF
-            { $$ = eNormal; }
+            { $$ = PriorDistributions::normal; }
           | INV_GAMMA_PDF
-            { $$ = eInvGamma; }
+            { $$ = PriorDistributions::invGamma; }
           | INV_GAMMA1_PDF
-            { $$ = eInvGamma1; }
+            { $$ = PriorDistributions::invGamma1; }
           | UNIFORM_PDF
-            { $$ = eUniform; }
+            { $$ = PriorDistributions::uniform; }
           | INV_GAMMA2_PDF
-            { $$ = eInvGamma2; }
+            { $$ = PriorDistributions::invGamma2; }
           | WEIBULL_PDF
-            { $$ = eWeibull; }
+            { $$ = PriorDistributions::weibull; }
           ;
 
 date_str : DATES { $$ = $1; }
@@ -1799,19 +1799,19 @@ subsamples_name_list : subsamples_name_list COMMA o_subsample_name
                      | o_subsample_name
                      ;
 
-prior : symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = eNoShape; } '(' prior_options_list ')' ';'
+prior : symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = PriorDistributions::noShape; } '(' prior_options_list ')' ';'
         { driver.set_prior($1, new string ("")); }
-      | symbol '.' symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = eNoShape; } '(' prior_options_list ')' ';'
+      | symbol '.' symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = PriorDistributions::noShape; } '(' prior_options_list ')' ';'
         { driver.set_prior($1, $3); }
-      | SYMBOL_VEC '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = eNoShape; }  '(' joint_prior_options_list ')' ';'
+      | SYMBOL_VEC '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = PriorDistributions::noShape; }  '(' joint_prior_options_list ')' ';'
         { driver.set_joint_prior($1); }
-      | STD '(' symbol ')' '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = eNoShape; } '(' prior_options_list ')' ';'
+      | STD '(' symbol ')' '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = PriorDistributions::noShape; } '(' prior_options_list ')' ';'
         { driver.set_std_prior($3, new string ("")); }
-      | STD '(' symbol ')' '.' symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = eNoShape; } '(' prior_options_list ')' ';'
+      | STD '(' symbol ')' '.' symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = PriorDistributions::noShape; } '(' prior_options_list ')' ';'
         { driver.set_std_prior($3, $6); }
-      | CORR '(' symbol COMMA symbol ')' '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = eNoShape; } '(' prior_options_list ')' ';'
+      | CORR '(' symbol COMMA symbol ')' '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = PriorDistributions::noShape; } '(' prior_options_list ')' ';'
         { driver.set_corr_prior($3, $5, new string ("")); }
-      | CORR '(' symbol COMMA symbol ')' '.' symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = eNoShape; } '(' prior_options_list ')' ';'
+      | CORR '(' symbol COMMA symbol ')' '.' symbol '.' PRIOR { driver.set_prior_variance(); driver.prior_shape = PriorDistributions::noShape; } '(' prior_options_list ')' ';'
         { driver.set_corr_prior($3, $5, $8); }
       ;
 
diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc
index bdac0815590f9dcb60def91b6cbac40598cdbb89..1192428e0cf584718a4463882cf1bb4282e82e0c 100644
--- a/src/ParsingDriver.cc
+++ b/src/ParsingDriver.cc
@@ -1892,7 +1892,7 @@ ParsingDriver::set_prior(string *name, string *subsample_name)
   mod_file->addStatement(new PriorStatement(*name, *subsample_name, prior_shape, prior_variance, options_list));
   options_list.clear();
   set_prior_variance();
-  prior_shape = eNoShape;
+  prior_shape = PriorDistributions::noShape;
   delete name;
   delete subsample_name;
 }
@@ -1905,7 +1905,7 @@ ParsingDriver::set_joint_prior(vector<string *> *symbol_vec)
   mod_file->addStatement(new JointPriorStatement(joint_parameters, prior_shape, options_list));
   joint_parameters.clear();
   options_list.clear();
-  prior_shape = eNoShape;
+  prior_shape = PriorDistributions::noShape;
   delete symbol_vec;
 }
 
@@ -2045,7 +2045,7 @@ ParsingDriver::set_std_prior(string *name, string *subsample_name)
                                                options_list, mod_file->symbol_table));
   options_list.clear();
   set_prior_variance();
-  prior_shape = eNoShape;
+  prior_shape = PriorDistributions::noShape;
   delete name;
   delete subsample_name;
 }
@@ -2071,7 +2071,7 @@ ParsingDriver::set_corr_prior(string *name1, string *name2, string *subsample_na
                                                 options_list, mod_file->symbol_table));
   options_list.clear();
   set_prior_variance();
-  prior_shape = eNoShape;
+  prior_shape = PriorDistributions::noShape;
   delete name1;
   delete name2;
   delete subsample_name;