Implement a parser mode for JSON files
[libs/datafile.git] / source / jsonparser.h
1 #ifndef MSP_DATAFILE_JSONPARSER_H_
2 #define MSP_DATAFILE_JSONPARSER_H_
3
4 #include "parsermode.h"
5 #include "token.h"
6
7 namespace Msp {
8 namespace DataFile {
9
10 class JsonParser: public ParserMode
11 {
12 private:
13         enum State
14         {
15                 STATE_INIT,
16                 STATE_ARRAY,
17                 STATE_OBJECT,
18                 STATE_END
19         };
20
21         State toplevel_state;
22
23 public:
24         JsonParser(Input &, const std::string &);
25
26         virtual Statement parse();
27 private:
28         Statement parse_statement(const Token *, State, const std::string &);
29         Token parse_token();
30         bool is_delimiter(int);
31         std::string unescape(const std::string &);
32 };
33
34 } // namespace DataFile
35 } // namespace Msp
36
37 #endif