1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| #ifndef TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
| #define TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
| #if defined(_MSC_VER) || \
| (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
| (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
| #pragma once
| #endif
|
| #include "yaml-cpp/mark.h"
| #include <iostream>
| #include <string>
| #include <vector>
|
| namespace YAML {
| const std::string TokenNames[] = {
| "DIRECTIVE", "DOC_START", "DOC_END", "BLOCK_SEQ_START", "BLOCK_MAP_START",
| "BLOCK_SEQ_END", "BLOCK_MAP_END", "BLOCK_ENTRY", "FLOW_SEQ_START",
| "FLOW_MAP_START", "FLOW_SEQ_END", "FLOW_MAP_END", "FLOW_MAP_COMPACT",
| "FLOW_ENTRY", "KEY", "VALUE", "ANCHOR", "ALIAS", "TAG", "SCALAR"};
|
| struct Token {
| // enums
| enum STATUS { VALID, INVALID, UNVERIFIED };
| enum TYPE {
| DIRECTIVE,
| DOC_START,
| DOC_END,
| BLOCK_SEQ_START,
| BLOCK_MAP_START,
| BLOCK_SEQ_END,
| BLOCK_MAP_END,
| BLOCK_ENTRY,
| FLOW_SEQ_START,
| FLOW_MAP_START,
| FLOW_SEQ_END,
| FLOW_MAP_END,
| FLOW_MAP_COMPACT,
| FLOW_ENTRY,
| KEY,
| VALUE,
| ANCHOR,
| ALIAS,
| TAG,
| PLAIN_SCALAR,
| NON_PLAIN_SCALAR
| };
|
| // data
| Token(TYPE type_, const Mark& mark_)
| : status(VALID), type(type_), mark(mark_), data(0) {}
|
| friend std::ostream& operator<<(std::ostream& out, const Token& token) {
| out << TokenNames[token.type] << std::string(": ") << token.value;
| for (std::size_t i = 0; i < token.params.size(); i++)
| out << std::string(" ") << token.params[i];
| return out;
| }
|
| STATUS status;
| TYPE type;
| Mark mark;
| std::string value;
| std::vector<std::string> params;
| int data;
| };
| }
|
| #endif // TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
|