Files
bits-runner-builder/src/Token.cpp
Rafał Grodziński 5e3ef33f15 Updated lexer
2025-06-02 17:57:21 +09:00

88 lines
1.8 KiB
C++

#include "Token.h"
Token::Token(Kind kind, string lexme, int line, int column):
kind(kind), lexme(lexme), line(line), column(column) {
}
Token::Kind Token::getKind() {
return kind;
}
string Token::getLexme() {
return lexme;
}
int Token::getLine() {
return line;
}
int Token::getColumn() {
return column;
}
bool Token::isValid() {
return kind != Token::Kind::INVALID;
}
bool Token::isOfKind(vector<Kind> kinds) {
for (Kind &kind : kinds) {
if (kind == this->kind)
return true;
}
return false;
}
string Token::toString() {
switch (kind) {
case PLUS:
return "PLUS";
case MINUS:
return "MINUS";
case STAR:
return "STAR";
case SLASH:
return "SLASH";
case PERCENT:
return "PERCENT";
case EQUAL:
return "EQUAL";
case NOT_EQUAL:
return "NOT_EQUAL";
case LESS:
return "LESS";
case LESS_EQUAL:
return "LESS_EQUAL";
case GREATER:
return "GREATER";
case GREATER_EQUAL:
return "GREATER_EQUAL";
case LEFT_PAREN:
return "LEFT_PAREN";
case RIGHT_PAREN:
return "RIGHT_PAREN";
case COLON:
return "COLON";
case SEMICOLON:
return "SEMICOLON";
case INTEGER:
return "INTEGER(" + lexme + ")";
case IDENTIFIER:
return "IDENTIFIER(" + lexme + ")";
case FUNCTION:
return "FUNCTION";
case RETURN:
return "RETURN";
case NEW_LINE:
return "NEW_LINE";
case END:
return "END";
case INVALID:
return "INVALID";
}
}