-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEvalVisitor.h
36 lines (30 loc) · 1.1 KB
/
EvalVisitor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//
// Created by nalle on 8/15/2017.
//
#pragma once
#include "ASTVisitor.h"
#include <stdlib.h> // atof
#include <map>
class EvalVisitor : public ASTVisitor
{
protected:
virtual void visit(std::shared_ptr<ASTNode> node) override;
virtual void visit(std::shared_ptr<ASTExp> node) override;
virtual void visit(std::shared_ptr<ASTOp> node) override;
virtual void visit(std::shared_ptr<ASTAdd> node) override;
virtual void visit(std::shared_ptr<ASTSub> node) override;
virtual void visit(std::shared_ptr<ASTMul> node) override;
virtual void visit(std::shared_ptr<ASTDiv> node) override;
virtual void visit(std::shared_ptr<ASTVar> node) override;
virtual void visit(std::shared_ptr<ASTNum> node) override;
virtual void visit(std::shared_ptr<ASTAssign> node) override;
public:
EvalVisitor(void) = default;
virtual ~EvalVisitor(void) = default;
std::string getResult(void);
private:
/* calculate and save result to mTmpRes(double ver) and mResult(str for output) every time */
std::string mResultStr;
double mTmpRes;
std::map<std::string, double> mVarMap;
};