diff --git a/include/lexer/Cursor.h b/include/lexer/Cursor.h index 3f59c93..4d28772 100644 --- a/include/lexer/Cursor.h +++ b/include/lexer/Cursor.h @@ -1,2 +1,23 @@ #pragma once +#include + +namespace lexer { +// controlled character stream access +class Cursor { +private: + const std::string &source; + int position; // current index in string + int line; // current index of line + int column; // + +public: + char current(); // returns current symbol + + char peek(int offset); // + void advance(); + + bool eol() const; + bool eof() const; +}; +} \ No newline at end of file diff --git a/include/lexer/Token.h b/include/lexer/Token.h index 48bc2f4..bfac365 100644 --- a/include/lexer/Token.h +++ b/include/lexer/Token.h @@ -6,7 +6,7 @@ namespace lexer { struct Token { TokenKind kind; - std::string lexeme; + std::string value; int line; int column;