Files
manafiles/src/util/json/parser.h
T

50 lines
682 B
C++

/*
* Copyright (C) 2022 Riyyi
*
* SPDX-License-Identifier: MIT
*/
#ifndef JSON_PARSER_H
#define JSON_PARSER_H
#include <cstddef> // size_t
#include <vector>
#include "util/json/lexer.h"
namespace Json {
class Job;
class Value;
class Parser {
public:
Parser(Job* job);
virtual ~Parser();
Value parse();
private:
Token peek();
bool seekForward(Token::Type type);
Token consume();
bool consumeSpecific(Token::Type type);
Value getLiteral();
Value getNumber();
Value getString();
Value getArray();
Value getObject();
Job* m_job { nullptr };
size_t m_index { 0 };
std::vector<Token>* m_tokens { nullptr };
};
} // namespace Json
#endif // JSON_PARSER_H