Util: Add GenericLexer class

This commit is contained in:
Riyyi
2022-07-20 22:49:41 +02:00
parent 4e6c5ca341
commit 4ce026ec78
2 changed files with 98 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
/*
* Copyright (C) 2022 Riyyi
*
* SPDX-License-Identifier: MIT
*/
#ifndef UTIL_GENERIC_LEXER_H
#define UTIL_GENERIC_LEXER_H
#include <cassert> // assert
#include <cstddef> // size_t
#include <string_view>
namespace Util {
class GenericLexer {
public:
GenericLexer(std::string_view input);
virtual ~GenericLexer();
// Position
size_t tell() const;
bool isEOF() const;
// Access
char peek(size_t offset = 0) const;
// Modifiers
void ignore(size_t count = 1);
void retreat(size_t count = 1);
char consume();
protected:
size_t m_index { 0 };
std::string_view m_input;
};
} // namespace Util
#endif // UTIL_GENERIC_LEXER_H