Commit bd43182a authored by sebastien's avatar sebastien
Browse files

* preprocessor: make optional the warnings about uninitialized...

* preprocessor: make optional the warnings about uninitialized parameters/endogenous/exogenous, added a new "warn_uninit" option to dynare command to display them
* reference manual: documented the new option, fixed XML conformance of the document


git-svn-id: https://www.dynare.org/svn/dynare/trunk@3135 ac1d8469-bf42-47a9-8791-bf33cf982152
parent 51e1a776
......@@ -34,12 +34,12 @@ using namespace std;
Splitting main() in two parts was necessary because ParsingDriver.h and MacroDriver.h can't be
included simultaneously (because of Bison limitations).
*/
void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms);
void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms, bool warn_uninit);
void
usage()
{
cerr << "Dynare usage: dynare mod_file [debug] [noclearall] [savemacro[=macro_file]] [onlymacro] [nolinemacro] [notmpterms]" << endl;
cerr << "Dynare usage: dynare mod_file [debug] [noclearall] [savemacro[=macro_file]] [onlymacro] [nolinemacro] [notmpterms] [warn_uninit]" << endl;
exit(EXIT_FAILURE);
}
......@@ -59,6 +59,7 @@ main(int argc, char** argv)
bool no_tmp_terms = false;
bool only_macro = false;
bool no_line_macro = false;
bool warn_uninit = false;
// Parse options
for (int arg = 2; arg < argc; arg++)
......@@ -86,6 +87,8 @@ main(int argc, char** argv)
no_line_macro = true;
else if (!strcmp(argv[arg], "notmpterms"))
no_tmp_terms = true;
else if (!strcmp(argv[arg], "warn_uninit"))
warn_uninit = true;
else
{
cerr << "Unknown option: " << argv[arg] << endl;
......@@ -125,7 +128,7 @@ main(int argc, char** argv)
return EXIT_SUCCESS;
// Do the rest
main2(macro_output, basename, debug, clear_all, no_tmp_terms);
main2(macro_output, basename, debug, clear_all, no_tmp_terms, warn_uninit);
return EXIT_SUCCESS;
}
......@@ -25,7 +25,8 @@ using namespace std;
#include "ModFile.hh"
void
main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms)
main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms,
bool warn_uninit)
{
ParsingDriver p;
......@@ -39,7 +40,7 @@ main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tm
mod_file->transformPass();
// Evaluate parameters initialization, initval, endval and pounds
mod_file->evalAllExpressions();
mod_file->evalAllExpressions(warn_uninit);
// Do computations
mod_file->computingPass(no_tmp_terms);
......
......@@ -40,7 +40,7 @@ ModFile::~ModFile()
}
void
ModFile::evalAllExpressions()
ModFile::evalAllExpressions(bool warn_uninit)
{
cout << "Evaluating expressions...";
......@@ -73,7 +73,8 @@ ModFile::evalAllExpressions()
|| type == eParameter || type == eModelLocalVariable)
&& global_eval_context.find(id) == global_eval_context.end())
{
cerr << "WARNING: can't find a numeric initial value for " << symbol_table.getName(id) << ", using zero" << endl;
if (warn_uninit)
cerr << "WARNING: can't find a numeric initial value for " << symbol_table.getName(id) << ", using zero" << endl;
global_eval_context[id] = 0;
}
}
......
......@@ -77,7 +77,8 @@ public:
//! Add a statement
void addStatement(Statement *st);
//! Evaluate all the statements
void evalAllExpressions();
/*! \param warn_uninit Should a warning be displayed for uninitialized endogenous/exogenous/parameters ? */
void evalAllExpressions(bool warn_uninit);
//! Do some checking and fills mod_file_struct
/*! \todo add check for number of equations and endogenous if ramsey_policy is present */
void checkPass();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment