#include <msp/strings/format.h>
#include "binaryparser.h"
-#include "dataerror.h"
+#include "except.h"
+#include "jsonparser.h"
#include "parser.h"
#include "statement.h"
#include "textparser.h"
in(i),
main_src(s),
src(s),
- good(true),
- mode(new TextParser(in, src))
-{ }
+ good(true)
+{
+ char c = in.peek();
+ if(c=='{' || c=='[')
+ mode = new JsonParser(in, src);
+ else
+ mode = new TextParser(in, src);
+}
Parser::~Parser()
{
const StatementKey *Parser::peek(unsigned level)
{
- while(1)
+ while(good)
{
const StatementKey *key = mode->peek(level);
if(key && !key->keyword.compare(0, 2, "__"))
else
return key;
}
+
+ return 0;
}
bool Parser::parse_and_load(unsigned level, Loader &ldr, const LoaderAction &act)