Added logger

This commit is contained in:
Rafał Grodziński
2025-07-02 12:03:47 +09:00
parent 7a22e0e33f
commit 56e380b3ed
3 changed files with 114 additions and 8 deletions

93
src/Logger.cpp Normal file
View File

@@ -0,0 +1,93 @@
#include "Logger.h"
#include <iostream>
#include "Lexer/Token.h"
string Logger::toString(shared_ptr<Token> token) {
switch (token->getKind()) {
case TokenKind::PLUS:
return "+";
case TokenKind::MINUS:
return "-";
case TokenKind::STAR:
return "*";
case TokenKind::SLASH:
return "/";
case TokenKind::PERCENT:
return "%";
case TokenKind::EQUAL:
return "=";
case TokenKind::NOT_EQUAL:
return "";
case TokenKind::LESS:
return "<";
case TokenKind::LESS_EQUAL:
return "";
case TokenKind::GREATER:
return ">";
case TokenKind::GREATER_EQUAL:
return "";
case TokenKind::LEFT_PAREN:
return "(";
case TokenKind::RIGHT_PAREN:
return ")";
case TokenKind::COMMA:
return ",";
case TokenKind::COLON:
return ":";
case TokenKind::SEMICOLON:
return ";";
case TokenKind::LEFT_ARROW:
return "";
case TokenKind::RIGHT_ARROW:
return "";
case TokenKind::BOOL:
return "BOOL(" + token->getLexme() + ")";
case TokenKind::INTEGER_DEC:
return "INT_DEC(" + token->getLexme() + ")";
case TokenKind::INTEGER_HEX:
return "INT_HEX(" + token->getLexme() + ")";
case TokenKind::INTEGER_BIN:
return "INT_BIN(" + token->getLexme() + ")";
case TokenKind::REAL:
return "REAL(" + token->getLexme() + ")";
case TokenKind::IDENTIFIER:
return "ID(" + token->getLexme() + ")";
case TokenKind::TYPE:
return "TYPE(" + token->getLexme() + ")";
case TokenKind::IF:
return "IF";
case TokenKind::ELSE:
return "ELSE";
case TokenKind::FUNCTION:
return "FUN";
case TokenKind::RETURN:
return "RET";
case TokenKind::REPEAT:
return "REP";
case TokenKind::M_EXTERN:
return "@EXTERN";
case TokenKind::NEW_LINE:
return "";
case TokenKind::END:
return "END";
case TokenKind::INVALID:
return "INVALID";
}
}
void Logger::print(vector<shared_ptr<Token>> tokens) {
for (int i=0; i<tokens.size(); i++) {
cout << i << "|" << toString(tokens.at(i));
if (i < tokens.size() - 1)
cout << " ";
}
cout << endl << endl;
}

18
src/Logger.h Normal file
View File

@@ -0,0 +1,18 @@
#ifndef LOGGER_H
#define LOGGER_H
#include <vector>
class Token;
using namespace std;
class Logger {
private:
static string toString(shared_ptr<Token> token);
public:
static void print(vector<shared_ptr<Token>> tokens);
};
#endif

View File

@@ -13,6 +13,7 @@
#include "Compiler/ModuleBuilder.h"
#include "Compiler/CodeGenerator.h"
#include "Logger.h"
using namespace std;
@@ -55,14 +56,8 @@ int main(int argc, char **argv) {
Lexer lexer(source);
vector<shared_ptr<Token>> tokens = lexer.getTokens();
if (isVerbose) {
for (int i=0; i<tokens.size(); i++) {
cout << i << "|" << tokens.at(i)->toString();
if (i < tokens.size() - 1)
cout << ", ";
}
cout << endl << endl;
}
if (isVerbose)
Logger::print(tokens);
Parser parser(tokens);
vector<shared_ptr<Statement>> statements = parser.getStatements();