Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-05-12 09:08:10

0001 #ifndef TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
0002 #define TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
0003 
0004 #if defined(_MSC_VER) ||                                            \
0005     (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
0006      (__GNUC__ >= 4))  // GCC supports "pragma once" correctly since 3.4
0007 #pragma once
0008 #endif
0009 
0010 #include "ATOOLS/YAML/yaml-cpp/mark.h"
0011 #include <iostream>
0012 #include <string>
0013 #include <vector>
0014 
0015 namespace SHERPA_YAML {
0016 const std::string TokenNames[] = {
0017     "DIRECTIVE",        "DOC_START",      "DOC_END",       "BLOCK_SEQ_START",
0018     "BLOCK_MAP_START",  "BLOCK_SEQ_END",  "BLOCK_MAP_END", "BLOCK_ENTRY",
0019     "FLOW_SEQ_START",   "FLOW_MAP_START", "FLOW_SEQ_END",  "FLOW_MAP_END",
0020     "FLOW_MAP_COMPACT", "FLOW_ENTRY",     "KEY",           "VALUE",
0021     "ANCHOR",           "ALIAS",          "TAG",           "SCALAR"};
0022 
0023 struct Token {
0024   // enums
0025   enum STATUS { VALID, INVALID, UNVERIFIED };
0026   enum TYPE {
0027     DIRECTIVE,
0028     DOC_START,
0029     DOC_END,
0030     BLOCK_SEQ_START,
0031     BLOCK_MAP_START,
0032     BLOCK_SEQ_END,
0033     BLOCK_MAP_END,
0034     BLOCK_ENTRY,
0035     FLOW_SEQ_START,
0036     FLOW_MAP_START,
0037     FLOW_SEQ_END,
0038     FLOW_MAP_END,
0039     FLOW_MAP_COMPACT,
0040     FLOW_ENTRY,
0041     KEY,
0042     VALUE,
0043     ANCHOR,
0044     ALIAS,
0045     TAG,
0046     PLAIN_SCALAR,
0047     NON_PLAIN_SCALAR
0048   };
0049 
0050   // data
0051   Token(TYPE type_, const Mark& mark_)
0052       : status(VALID), type(type_), mark(mark_), value{}, params{}, data(0) {}
0053 
0054   friend std::ostream& operator<<(std::ostream& out, const Token& token) {
0055     out << TokenNames[token.type] << std::string(": ") << token.value;
0056     for (const std::string& param : token.params)
0057       out << std::string(" ") << param;
0058     return out;
0059   }
0060 
0061   STATUS status;
0062   TYPE type;
0063   Mark mark;
0064   std::string value;
0065   std::vector<std::string> params;
0066   int data;
0067 };
0068 }  // namespace SHERPA_YAML
0069 
0070 #endif  // TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66