Piethon  1.0
A Python-like interpreter using flex and bison.
expression.cpp
Go to the documentation of this file.
1 #include "symbolTable.h"
2 #include "function.h"
3 #include "functionTable.h"
4 #include "expression.h"
5 
6 Number Constant::eval(const SymbolTable &st, const FunctionTable &ft) const {
7  return num;
8 }
9 
10 Number Identifier::eval(const SymbolTable& st, const FunctionTable& ft) const {
11  return st[name];
12 }
13 
15  delete op;
16 }
17 
18 Number Negation::eval(const SymbolTable& st, const FunctionTable& ft) const {
19  return -(op->eval(st, ft));
20 }
21 
23  delete argList;
24 }
25 
27  return ft[name]->apply(st, ft, argList);
28 }
29 
31  delete op1;
32  delete op2;
33 }
34 
35 Number Addition::eval(const SymbolTable& st, const FunctionTable& ft) const {
36  return op1->eval(st, ft) + op2->eval(st, ft);
37 }
38 
39 Number Subtraction::eval(const SymbolTable& st, const FunctionTable& ft) const {
40  return op1->eval(st, ft) - op2->eval(st, ft);
41 }
42 
44  return op1->eval(st, ft) * op2->eval(st, ft);
45 }
46 
47 Number Division::eval(const SymbolTable& st, const FunctionTable& ft) const {
48  return op1->eval(st, ft) / op2->eval(st, ft);
49 }
50 
51 Number Modulus::eval(const SymbolTable& st, const FunctionTable& ft) const {
52  return op1->eval(st, ft) % op2->eval(st, ft);
53 }
54 
55 Number Exponent::eval(const SymbolTable& st, const FunctionTable& ft) const {
56  return op1->eval(st, ft) ^ op2->eval(st, ft);
57 }
58 
59 Number LessThan::eval(const SymbolTable& st, const FunctionTable& ft) const {
60  return op1->eval(st, ft) < op2->eval(st, ft);
61 }
62 
63 Number GreaterThan::eval(const SymbolTable& st, const FunctionTable& ft) const {
64  return op1->eval(st, ft) > op2->eval(st, ft);
65 }
66 
68  return op1->eval(st, ft) <= op2->eval(st, ft);
69 }
70 
72  return op1->eval(st, ft) >= op2->eval(st, ft);
73 }
74 
75 Number Equals::eval(const SymbolTable& st, const FunctionTable& ft) const {
76  return op1->eval(st, ft) == op2->eval(st, ft);
77 }
78 
79 Number NotEquals::eval(const SymbolTable& st, const FunctionTable& ft) const {
80  return op1->eval(st, ft) != op2->eval(st, ft);
81 }
82 
84  expList.push_back(exp);
85 }
86 
87 unsigned int ExpressionList::size() const {
88  return expList.size();
89 }
90 
91 list<Expression*>::const_iterator ExpressionList::begin() const {
92  return expList.begin();
93 }
94 
95 list<Expression*>::const_iterator ExpressionList::end() const {
96  return expList.end();
97 }
98 
100  for (list<Expression*>::iterator it = expList.begin(); it != expList.end(); ++it) {
101  delete *it;
102  }
103 }
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:59
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:71
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:67
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:35
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:26
unsigned int size() const
Definition: expression.cpp:87
list< Expression * >::const_iterator begin() const
Definition: expression.cpp:91
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:55
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:75
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:10
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:18
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:63
list< Expression * >::const_iterator end() const
Definition: expression.cpp:95
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:47
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:43
Definition: number.h:21
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:39
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:6
void add(Expression *exp)
Definition: expression.cpp:83
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:79
virtual Number eval(const SymbolTable &, const FunctionTable &) const
Definition: expression.cpp:51