3 #include <hocon/config_parse_options.hpp>
4 #include <internal/nodes/config_node_object.hpp>
5 #include <internal/nodes/config_node_root.hpp>
6 #include <internal/nodes/config_node_include.hpp>
7 #include <internal/simple_config_origin.hpp>
8 #include <internal/tokenizer.hpp>
12 namespace hocon {
namespace config_document_parser {
14 std::shared_ptr<config_node_root> parse(token_iterator tokens,
16 config_parse_options options);
18 shared_node_value parse_value(token_iterator tokens,
20 config_parse_options options);
26 std::shared_ptr<config_node_root> parse();
36 shared_token pop_token();
37 shared_token next_token();
38 shared_token next_token_collecting_whitespace(shared_node_list& nodes);
39 void put_back(shared_token
token);
49 bool check_element_separator(shared_node_list& nodes);
52 shared_node_value consolidate_values(shared_node_list& nodes);
54 std::string add_quote_suggestion(std::string bad_token, std::string message,
55 bool inside_equals,
path* last_path);
57 std::string add_quote_suggestion(std::string bad_token, std::string message);
59 shared_node_value parse_value(shared_token t);
60 std::shared_ptr<config_node_path> parse_key(shared_token t);
61 bool is_key_value_separator(shared_token t);
62 std::shared_ptr<config_node_include> parse_include(shared_node_list& children);
63 std::shared_ptr<config_node_complex_value> parse_object(
bool had_open_curly);
64 std::shared_ptr<config_node_complex_value> parse_array();
66 static bool is_include_keyword(shared_token t);
67 static bool is_unquoted_whitespace(shared_token t);
68 static bool is_valid_array_element(shared_token t);
71 std::stack<shared_token> _buffer;
73 config_syntax _flavor;
74 shared_origin _base_origin;