Tokenizing input

This commit is contained in:
Rafał Grodziński
2025-05-27 22:38:44 +09:00
parent 838dbbeb03
commit 69bf54a62d
8 changed files with 225 additions and 24 deletions

View File

@@ -1,18 +1,53 @@
#include "Token.h"
Token::Token(Kind kind): kind(kind) {
Token Token::Invalid = Token(Token::Kind::INVALID, "");
Token::Token(Kind kind, std::string lexme): kind(kind), lexme(lexme) {
}
Token::Kind Token::getKind() {
return kind;
}
std::string Token::getLexme() {
return lexme;
}
bool Token::operator==(Token const& other) {
return kind == other.kind;
}
bool Token::operator!=(Token const& other) {
return kind != other.kind;
}
std::string Token::toString() {
switch (kind) {
case integer:
case PLUS:
return "PLUS";
case MINUS:
return "MINUS";
case STAR:
return "STAR";
case SLASH:
return "SLASH";
case PERCENT:
return "PERCENT";
case LEFT_PAREN:
return "LEFT_PARENT";
case RIGHT_PAREN:
return "RIGHT_PAREN";
case DOT:
return "DOT";
case COMMA:
return "COMMA";
case INTEGER:
return "INTEGER";
break;
case real:
return "REAL";
break;
case eof:
return "EOF";
break;
case NEW_LINE:
return "NEW_LINE";
case END:
return "END";
case INVALID:
return "INVALID";
}
}