parser.h 638 Bytes
Newer Older
1
2
3
#pragma once

#include <ios>
4
5
6
#include <string>
#include <vector>
#include <map>
7
#include "node.h"
8
#include "parserstate.h"
9
10
11

namespace YAML
{
12
	class Scanner;
13
	struct Token;
14
15
16
17
18
19
20

	class Parser
	{
	public:
		Parser(std::istream& in);
		~Parser();

21
22
		operator bool() const;

23
		void Load(std::istream& in);
24
		void GetNextDocument(Node& document);
25
26
27
28
		void PrintTokens(std::ostream& out);

	private:
		void ParseDirectives();
29
30
31
		void HandleDirective(Token *pToken);
		void HandleYamlDirective(Token *pToken);
		void HandleTagDirective(Token *pToken);
32
33

	private:
34
		Scanner *m_pScanner;
35
		ParserState m_state;
36
37
	};
}