2024-01-05 12:04
BullseyeCoverage 9.6.4
expr/ Lexer.h


1 // Expression evaluator lexer interface 2 3 #ifndef Token_h 4 #define Token_h 1 5 6 #include <cstdint> 7 8 struct Token { 9 enum class Kind { 10 endOfInput, 11 bitwiseAnd, 12 bitwiseNot, 13 bitwiseOr, 14 bitwiseXor, 15 divide, 16 equal, 17 greaterThan, 18 greaterThanEq, 19 lessThan, 20 lessThanEq, 21 logicalAnd, 22 logicalNot, 23 logicalOr, 24 notEqual, 25 number, 26 minus, 27 modulus, 28 multiply, 29 parenLeft, 30 parenRight, 31 plus, 32 shiftLeft, 33 shiftRight, 34 }; 35 Kind kind = Kind::endOfInput; 36 int64_t value = 0; 37 }; 38 39 class Lexer { 40 public: 41 explicit Lexer(const char* string) : m_next(string) { } 42 bool read(Token& token); 43 static void unitTest(); 44 private: 45 const char* m_next; 46 static Token::Kind unitTest(const char* string); 47 }; 48 49 #endif