[ozulis] fixing some memory leaks
[ozulis.git] / src / ozulis / parser.cc
blobb13669c2811279255324da5489590294c10d4d82
1 #include <stdio.h>
2 #include <string>
3 #include <errno.h>
4 #include <string.h>
6 #include <boost/format.hpp>
8 #include <ozulis/core/assert.hh>
9 #include <ozulis/parser.hh>
10 #include <ozulis/compiler.hh>
12 namespace ozulis
14 Parser::~Parser()
18 ast::FilePtr
19 Parser::parseFile(const boost::filesystem::path & path)
21 if (!boost::filesystem::is_regular_file(path))
22 Compiler::instance().error(
23 (boost::format(_("%1%: no such file.")) % path).str());
25 assert(!path.empty());
26 FILE * stream = fopen(path.string().c_str(), "r");
28 if (!stream)
29 Compiler::instance().error(
30 (boost::format(_("%1%: %2%.")) % path % strerror(errno)).str());
32 ast::FilePtr file = parse(stream);
33 fclose(stream);
34 return file;