token.h 1.2 KB
Newer Older
beder's avatar
beder committed
1
2
#pragma once

beder's avatar
beder committed
3
4
#include <ios>

beder's avatar
beder committed
5
6
namespace YAML
{
beder's avatar
beder committed
7
	struct Token {
beder's avatar
beder committed
8
		Token(): isValid(true), isPossible(true) {}
beder's avatar
beder committed
9
10
11
12
		virtual ~Token() {}
		virtual void Write(std::ostream& out) const {}

		friend std::ostream& operator << (std::ostream& out, const Token& token) { token.Write(out); return out; }
beder's avatar
beder committed
13
		bool isValid, isPossible;
14
	};
beder's avatar
beder committed
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

	struct StreamStartToken: public Token {};
	struct StreamEndToken: public Token {};
	struct DocumentStartToken: public Token {};
	struct DocumentEndToken: public Token {};

	struct BlockSeqStartToken: public Token {};
	struct BlockMapStartToken: public Token {};
	struct BlockEndToken: public Token {};
	struct BlockEntryToken: public Token {};

	struct FlowSeqStartToken: public Token {};
	struct FlowMapStartToken: public Token {};
	struct FlowSeqEndToken: public Token {};
	struct FlowMapEndToken: public Token {};
	struct FlowEntryToken: public Token {};

	struct KeyToken: public Token {};
	struct ValueToken: public Token {};

	struct ScalarToken: public Token {
		std::string value;
		virtual void Write(std::ostream& out) const { out << value; }
	};

	struct PlainScalarToken: public ScalarToken {};
	struct QuotedScalarToken: public ScalarToken {};
beder's avatar
beder committed
42
}