[moulette] switched to boost::signals2
[ozulis.git] / src / ozulis / parser.cc
blobd5bedb86ec05441026670e447f7cb37fc53f1d6e
1 #include <stdio.h>
2 #include <string>
3 #include <errno.h>
4 #include <string.h>
6 #include <boost/format.hpp>
7 #include <boost/filesystem/operations.hpp>
9 #include <ozulis/core/assert.hh>
10 #include <ozulis/parser.hh>
11 #include <ozulis/compiler.hh>
13 namespace ozulis
15 Parser::~Parser()
19 ast::FilePtr
20 Parser::parseFile(const boost::filesystem::path & path)
22 if (!boost::filesystem::is_regular_file(path))
23 Compiler::instance().error(
24 (boost::format(_("%1%: no such file.")) % path).str());
26 assert(!path.empty());
27 FILE * stream = fopen(path.string().c_str(), "r");
29 if (!stream)
30 Compiler::instance().error(
31 (boost::format(_("%1%: %2%.")) % path % strerror(errno)).str());
33 ast::FilePtr file = parse(stream);
34 fclose(stream);
35 return file;