X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Fjsonparser.h;fp=source%2Fjsonparser.h;h=611eea0070586884750887fb809289c3e50edd98;hp=0000000000000000000000000000000000000000;hb=705aca1ca0f63e7314a25f528e6e7c76765c04b8;hpb=cd3de49e76305a50ae61696210ce10804a59cef1 diff --git a/source/jsonparser.h b/source/jsonparser.h new file mode 100644 index 0000000..611eea0 --- /dev/null +++ b/source/jsonparser.h @@ -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