Skip to content
Snippets Groups Projects
Commit 69abc08d authored by Houtan Bastani's avatar Houtan Bastani
Browse files

macroprocessor: stop with error when division by zero is encountered. closes #1278

parent bb6ad83e
No related branches found
No related tags found
No related merge requests found
/*
* Copyright (C) 2008-2014 Dynare Team
* Copyright (C) 2008-2016 Dynare Team
*
* This file is part of Dynare.
*
......@@ -150,7 +150,12 @@ expr : INTEGER
| expr TIMES expr
{ TYPERR_CATCH($$ = *$1 * *$3, @$); }
| expr DIVIDE expr
{ TYPERR_CATCH($$ = *$1 / *$3, @$); }
{
if (dynamic_cast<const IntMV *>($3) != NULL
&& ((IntMV *)$3)->get_int_value() == 0)
driver.error(@$, "Division by zero");
TYPERR_CATCH($$ = *$1 / *$3, @$);
}
| expr LESS expr
{ TYPERR_CATCH($$ = *$1 < *$3, @$); }
| expr GREATER expr
......
/*
* Copyright (C) 2008-2013 Dynare Team
* Copyright (C) 2008-2016 Dynare Team
*
* This file is part of Dynare.
*
......@@ -158,6 +158,7 @@ public:
If mv2 < mv1, returns an empty range (for consistency with MATLAB).
*/
static const MacroValue *new_range(MacroDriver &driver, const MacroValue *mv1, const MacroValue *mv2) throw (TypeError);
inline int get_int_value() const { return value; };
};
//! Represents a string value in macro language
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment