Doxygen
[ozulis.git] / src / compiler.cc
blobef849cdb09973a4d6b561176c6f9bb2161ca3b77
1 #include <algorithm>
2 #include <boost/foreach.hpp>
4 #include <core/assert.hh>
5 #include <ast/ast.hh>
6 #include <ast/ascii-visitor.hh>
7 #include <ast/scope-builder-visitor.hh>
8 #include <lang/parser-factory.hh>
9 #include <compiler.hh>
10 #include <task.hh>
11 #include <parse-task.hh>
13 Compiler::Compiler()
14 : tasks_(),
15 astDump_(false)
19 Compiler::~Compiler()
23 void
24 Compiler::addTask(Task * task)
26 assert(task);
27 tasks_.push_back(task);
30 void
31 Compiler::compile()
33 sort(tasks_.begin(), tasks_.end());
34 BOOST_FOREACH(Task * task, tasks_)
36 assert(task);
37 task->accept(*this);
41 void
42 Compiler::work(Task & task)
44 assert(false);
47 void
48 Compiler::work(ParseTask & task)
50 ast::File * file = lang::ParserFactory::parseFile(task.filename);
51 file->path = task.filename;
52 if (astDump_) {
53 ast::AsciiVisitor v;
54 file->accept(v);
56 ast::ScopeBuilderVisitor sbv;
57 file->accept(sbv);