#include "visitor.hh"
#include "range_checking.hh"
using namespace ast;
namespace range_checking {
class RangeCheckVisitor : public Visitor {
public:
virtual void visit (RExpr &rexpr);
};
};
using namespace range_checking;
void
RangeCheckVisitor::visit (RExpr &rexpr)
{
if (rexpr.begin_br()->is_less() && rexpr.end_br()->is_less())
return;
if (rexpr.begin_br()->is_greater() && rexpr.end_br()->is_greater())
return;
throw new RangeError(rexpr);
}
void
RangeError::print_error_msg (std::ostream &os)
{
os << "Invalid range expression." << std::endl;
}
void
range_checking::check(DProg *dprog)
{
RangeCheckVisitor rcheck;
dprog->accept_top_down(rcheck);
}
syntax highlighted by Code2HTML, v. 0.9.1