delete mode;
}
-Statement Parser::parse()
+Statement Parser::parse(bool raw)
{
if(!good)
throw logic_error("Parser::parse() !good");
{
while(1)
{
- Statement st = mode->parse();
+ Statement st = mode->parse(raw);
if(st.keyword=="__bin")
{
delete mode;
delete mode;
mode = new TextParser(in, src);
}
+ else if(st.keyword=="__z")
+ in.set_decompress();
else if(st.keyword=="__src")
{
string s = st.args[0].get<string>();
else
src = format("%s[%s]", main_src, s);
}
+ else if(st.keyword=="__end")
+ {
+ good = false;
+ return raw ? st : Statement();
+ }
else
return st;
+
+ if(raw)
+ return st;
}
}
catch(const exception &e)