]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/jsonparser.h
Implement a parser mode for JSON files
[libs/datafile.git] / source / jsonparser.h
diff --git a/source/jsonparser.h b/source/jsonparser.h
new file mode 100644 (file)
index 0000000..611eea0
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef MSP_DATAFILE_JSONPARSER_H_
+#define MSP_DATAFILE_JSONPARSER_H_
+
+#include "parsermode.h"
+#include "token.h"
+
+namespace Msp {
+namespace DataFile {
+
+class JsonParser: public ParserMode
+{
+private:
+       enum State
+       {
+               STATE_INIT,
+               STATE_ARRAY,
+               STATE_OBJECT,
+               STATE_END
+       };
+
+       State toplevel_state;
+
+public:
+       JsonParser(Input &, const std::string &);
+
+       virtual Statement parse();
+private:
+       Statement parse_statement(const Token *, State, const std::string &);
+       Token parse_token();
+       bool is_delimiter(int);
+       std::string unescape(const std::string &);
+};
+
+} // namespace DataFile
+} // namespace Msp
+
+#endif