Header: Lexer.h
#ifndef DSL_LEXER_H
#define DSL_LEXER_H
#include <string>
#include <vector>
enum class TokenType {
Number,
Plus,
Minus,
Asterisk,
Slash,
LParen,
RParen,
EndOfFile,
Invalid
};
struct Token {
TokenType type;
std::string text;
double value; // Only valid for Number tokens.
};
class Lexer {
public:
Lexer(const std::string& input);
Token getNextToken();
private:
const std::string input;
size_t pos = 0;
char currentChar();
void advance();
void skipWhitespace();
Token number();
};
#endif // DSL_LEXER_H