1 #include "expression.h"
2 #include <algorithm>
3 using namespace std;
4
5 // ... RepeatExpression BEGIN ...
6 RepeatExpression::RepeatExpression(Expression* oper, int m) {
7 _oper = oper;
8 _mNum = m;
9 }
10
11 void RepeatExpression::eva l(stringstream& ss) {
12 stringstream t_str;
13 _oper->eva l(t_str);
14 for (int i = 0; i < _mNum; i++) {
15 ss << t_str.str();
16 }
17 }
18 // ... RepeatExpression END ...
19
20 // ... AddExpression BEGIN ...
21 AddExpression::AddExpression(Expression* oper1, Expression* oper2) {
22 _oper1 = oper1;
23 _oper2 = oper2;
24 }
25
26 void AddExpression::eva l(stringstream& ss) {
27 stringstream t_str;
28 _oper1->eva l(t_str);
29 _oper2->eva l(t_str);
30 ss << t_str.str();
31 }
32 // ... AddExpression END ...
33
34 // ... ReverseExpression BEGIN ...
35 ReverseExpression::ReverseExpression(Expression* o) {
36 _oper = o;
37 }
38
39 void ReverseExpression::eva l(stringstream& ss) {
40 stringstream t_str;
41 _oper->eva l(t_str);
42 string str = t_str.str();
43 reverse(str.begin(), str.end());
44 ss << str;
45 }
46 // ... ReverseExpression END ...
47
48 // ... Constant BEGIN ...
49 Constant::Constant(const char* str) {
50 _mStr = string(str);
51 }
52
53 Constant::Constant(const char* str, int len) {
54 _mStr = string(str, len);
55 }
56
57 void Constant::eva l(stringstream& ss) {
58 ss << _mStr;
59 }
60 // ... Constant END ...