From bb67c635994a187f1242fd4ca7be09f1abae84e8 Mon Sep 17 00:00:00 2001
From: Michel Juillard <michel.juillard@mjui.fr>
Date: Sat, 8 Mar 2014 09:55:00 +0100
Subject: [PATCH] adding ramsey_model to ParsingDriver

---
 ParsingDriver.cc | 12 +++++++++++-
 ParsingDriver.hh |  2 ++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/ParsingDriver.cc b/ParsingDriver.cc
index 4264b2a9..3a46428f 100644
--- a/ParsingDriver.cc
+++ b/ParsingDriver.cc
@@ -214,7 +214,7 @@ ParsingDriver::declare_optimal_policy_discount_factor_parameter(expr_t exprnode)
   string *optimalParName_declare = new string("optimal_policy_discount_factor");
   string *optimalParName_init = new string("optimal_policy_discount_factor");
   if (mod_file->symbol_table.exists(*optimalParName_declare))
-    error("Symbol optimal_policy_discount_factor is needed by Dynare when using an ramsey_policy or a discretionary_policy statement");
+    error("Symbol optimal_policy_discount_factor is needed by Dynare when using a ramsey_model, a ramsey_policy or a discretionary_policy statement");
   declare_parameter(optimalParName_declare, NULL);
   init_param(optimalParName_init, exprnode);
 }
@@ -1775,6 +1775,16 @@ ParsingDriver::end_planner_objective(expr_t expr)
   reset_data_tree();
 }
 
+void
+ParsingDriver::ramsey_model()
+{
+  if (!mod_file->symbol_table.exists("optimal_policy_discount_factor"))
+    declare_optimal_policy_discount_factor_parameter(data_tree->One);
+  mod_file->addStatement(new RamseyModelStatement(symbol_list, options_list));
+  symbol_list.clear();
+  options_list.clear();
+}
+
 void
 ParsingDriver::ramsey_policy()
 {
diff --git a/ParsingDriver.hh b/ParsingDriver.hh
index 853078cc..24b47ffc 100644
--- a/ParsingDriver.hh
+++ b/ParsingDriver.hh
@@ -493,6 +493,8 @@ public:
   void begin_planner_objective();
   //! End a planner objective statement
   void end_planner_objective(expr_t expr);
+  //! Ramsey model statement
+  void ramsey_model();
   //! Ramsey policy statement
   void ramsey_policy();
   //! Discretionary policy statement
-- 
GitLab