1 #include <msp/strings/format.h>
2 #include "binaryparser.h"
6 #include "textparser.h"
13 Parser::Parser(IO::Base &i, const string &s):
18 mode(new TextParser(in, src))
26 Statement Parser::parse()
29 throw logic_error("Parser::parse() !good");
35 Statement st = mode->parse();
36 if(st.keyword=="__bin")
39 mode = new BinaryParser(in, src);
41 else if(st.keyword=="__text")
44 mode = new TextParser(in, src);
46 else if(st.keyword=="__src")
48 string s = st.args[0].get<string>();
52 src = format("%s[%s]", main_src, s);
58 catch(const exception &e)
61 if(dynamic_cast<const data_error *>(&e))
64 throw data_error(src, in.get_line_number(), e);
68 } // namespace DataFile