1 #ifndef AST_SIMPLIFY_VISITOR_HH
2 # define AST_SIMPLIFY_VISITOR_HH
6 # include <ast/browse-visitor.hh>
11 * @brief transforms an AST to 3 address instructions.
12 * @sa ast::BrowseVisitor
14 class SimplifyVisitor
: public BrowseVisitor
17 typedef BrowseVisitor super_t
;
20 virtual ~SimplifyVisitor();
22 //virtual void visit(Node & node);
23 //virtual void visit(File & node);
24 //virtual void visit(Type & node);
25 /*virtual void visit(Number & node);
26 virtual void visit(Integer & node);
27 virtual void visit(Float & node);*/
28 //virtual void visit(Pointer & node);
29 //virtual void visit(Enum & node);
30 //virtual void visit(Array & node);
31 //virtual void visit(VarDecl & node);
32 //virtual void visit(Exp & node);
33 virtual void visit(AssignExp
& node
);
34 //virtual void visit(BinaryExp & node);
36 virtual void visit(EqExp
& node
);
37 virtual void visit(NeqExp
& node
);
38 virtual void visit(LtExp
& node
);
39 virtual void visit(LtEqExp
& node
);
40 virtual void visit(GtExp
& node
);
41 virtual void visit(GtEqExp
& node
);
42 virtual void visit(AddExp
& node
);
43 virtual void visit(SubExp
& node
);
44 virtual void visit(MulExp
& node
);
45 virtual void visit(DivExp
& node
);
46 virtual void visit(ModExp
& node
);
48 virtual void visit(AndExp
& node
);
49 virtual void visit(OrExp
& node
);
50 virtual void visit(XorExp
& node
);
52 virtual void visit(AndAndExp
& node
);
53 virtual void visit(OrOrExp
& node
);
55 virtual void visit(ShlExp
& node
);
56 virtual void visit(AShrExp
& node
);
57 virtual void visit(LShrExp
& node
);
59 virtual void visit(NumberExp
& node
);
60 virtual void visit(IdExp
& node
);
61 virtual void visit(Block
& node
);
62 //virtual void visit(Function & node);
64 virtual void visit(Label
& node
);
65 virtual void visit(Goto
& node
);
68 std::string
currentId() const;
71 std::vector
<Node
*> simplifications_
;
77 #endif /* !AST_SIMPLIFY_VISITOR_HH */