Generates llvm assembly code for additions :-)
[ozulis.git] / src / ast / llvm-generator-visitor.hh
blobaca2b9ae5435ccc9aa6435c17e8674ec5a927bdf
1 #ifndef AST_LLVM_GENERATOR_VISITOR_HH
2 # define AST_LLVM_GENERATOR_VISITOR_HH
4 # include <ostream>
6 # include <ast/browse-visitor.hh>
8 namespace ast
10 /// @defgroup Visitors
11 /**
12 * @brief Generates LLVM assembly
13 * @ingroup Visitors
15 class LLVMGeneratorVisitor : public ConstBrowseVisitor
17 public:
18 typedef ConstBrowseVisitor super_t;
20 LLVMGeneratorVisitor(std::ostream & out);
21 virtual ~LLVMGeneratorVisitor();
23 virtual void visit(const Function & node);
25 virtual void visit(const VarDecl & node);
27 virtual void visit(const LoadVar & node);
28 virtual void visit(const StoreVar & node);
30 virtual void visit(const IdExp & node);
31 virtual void visit(const NumberExp & node);
32 virtual void visit(const TmpResultExp & node);
34 virtual void visit(const AssignExp & node);
35 virtual void visit(const AddExp & node);
37 protected:
38 std::ostream & out_;
42 #endif /* !AST_LLVM_GENERATOR_VISITOR_HH */