/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#include "pgl/pgl.h"
#include "xstd/h/math.h"
#include "pgl/PglExprSym.h"
String ExpressionSym::TheType = "Expression";
bool ExpressionSym::isA(const String &type) const {
return SynSym::isA(type) || type == TheType;
}
ExpressionSym *ExpressionSym::unOper(const Oper &op) const {
cerr << theLoc << "type `" << type()
<< "' has no unary operator `" << op.image() << "'" << endl << xexit;
return 0;
}
ExpressionSym *ExpressionSym::bnOper(const Oper &op, const SynSym &exp) const {
cerr << theLoc << "binary operator `" << op.image() <<
"' cannot be applied to types `" << type() <<
"' and `" << exp.type() << "'" << endl << xexit;
return 0;
}
void ExpressionSym::checkDenom(int val) const {
if (val == 0)
cerr << theLoc << "denominator is zero" << endl << xexit;
}
void ExpressionSym::checkDenom(double val) const {
if (fabs(val) < 1e-8)
cerr << theLoc << "denominator is "
<< (val ? "[virtually]" : "")
<< " zero" << endl << xexit;
}
syntax highlighted by Code2HTML, v. 0.9.1