X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fparser.cpp;h=3957cf343642b54f2f5b6123be3e907bc200436e;hb=2f73f948cd2f4bb0bdcc0f5f81816fb169819879;hp=50948404921bd9903031946a8cc7f537ab37d1bc;hpb=9fd9af66cf20cdc3d217f273835410eb2c8c362b;p=libs%2Fdatafile.git diff --git a/source/parser.cpp b/source/parser.cpp index 5094840..3957cf3 100644 --- a/source/parser.cpp +++ b/source/parser.cpp @@ -23,7 +23,7 @@ Parser::~Parser() delete mode; } -Statement Parser::parse() +Statement Parser::parse(bool raw) { if(!good) throw logic_error("Parser::parse() !good"); @@ -32,7 +32,7 @@ Statement Parser::parse() { while(1) { - Statement st = mode->parse(); + Statement st = mode->parse(raw); if(st.keyword=="__bin") { delete mode; @@ -53,8 +53,16 @@ Statement Parser::parse() 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)