1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * 4 * HDF is dual licensed: you can use it either under the terms of 5 * the GPL, or the BSD license, at your option. 6 * See the LICENSE file in the root of this repository for complete details. 7 */ 8 9 #ifndef HC_GEN_TOKEN_H 10 #define HC_GEN_TOKEN_H 11 12 #include <memory> 13 #include <ostream> 14 #include <string> 15 16 namespace OHOS { 17 namespace Hardware { 18 19 enum TokenType { 20 NUMBER = 256, 21 TEMPLATE, 22 LITERAL, 23 STRING, 24 REF_PATH, 25 FILE_PATH, 26 ROOT, 27 INCLUDE, 28 DELETE, 29 }; 30 31 struct Token { 32 int32_t type; 33 std::string strval; 34 uint64_t numval; 35 std::shared_ptr<std::string> src; 36 int32_t lineNo; 37 bool operator==(Token &t) const; 38 bool operator!=(Token &t) const; 39 bool operator==(int32_t type) const; 40 bool operator!=(int32_t type) const; 41 friend std::ostream &operator<<(std::ostream &stream, const Token &t); 42 }; 43 44 std::ostream &operator<<(std::ostream &s, const Token &t); 45 46 std::string TokenType2String(int32_t type); 47 48 } // namespace Hardware 49 } // namespace OHOS 50 51 #endif // HC_GEN_TOKEN_H 52