macroprocessor: stop with error when division by zero is encountered. closes #1278
parent
bb6ad83e72
commit
69abc08d85
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* 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
|
||||
|
|
Loading…
Reference in New Issue