parser.h 715 Bytes
Newer Older
beder's avatar
beder committed
1
2
3
#pragma once

#include <ios>
4
5
6
#include <string>
#include <vector>
#include <map>
beder's avatar
beder committed
7
#include "document.h"
8
#include "parserstate.h"
beder's avatar
beder committed
9
10
11
12

namespace YAML
{
	class Node;
13
	class Scanner;
beder's avatar
beder committed
14
15
16
17
18
19
20

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

21
22
		operator bool() const;

beder's avatar
beder committed
23
		void GetNextDocument(Document& document);
24
25
26
27
28
29
30
		void PrintTokens(std::ostream& out);

	private:
		void ParseDirectives();
		void HandleDirective(const std::string& name, const std::vector <std::string>& params);
		void HandleYamlDirective(const std::vector <std::string>& params);
		void HandleTagDirective(const std::vector <std::string>& params);
beder's avatar
beder committed
31
32

	private:
33
		Scanner *m_pScanner;
34
		ParserState m_state;
beder's avatar
beder committed
35
36
	};
}