Mercurial > hg > Members > nobuyasu > SampleSource
diff boost-spirit/CALC/closure2/EUC/node.cpp @ 0:db40c85cad7a default tip
upload sample source
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 09 May 2011 03:11:59 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/boost-spirit/CALC/closure2/EUC/node.cpp Mon May 09 03:11:59 2011 +0900 @@ -0,0 +1,31 @@ +#include <iostream> +#include "node.h" + +int cnode::expr(std::map<std::string, int> &values) const +{ + switch (op_) { + case OP_NEG: + return -left_->expr(values); + + case OP_PLUS: + return left_->expr(values) + right_->expr(values); + + case OP_MINUS: + return left_->expr(values) - right_->expr(values); + + case OP_TIMES: + return left_->expr(values) * right_->expr(values); + + case OP_DIVIDE: + return left_->expr(values) / right_->expr(values); + + case OP_NUMBER: + return number_; + + case OP_IDENT: + return values[string_]; + + default: + return 0; // error + } +}