Added logger
This commit is contained in:
93
src/Logger.cpp
Normal file
93
src/Logger.cpp
Normal 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
18
src/Logger.h
Normal 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
|
||||
11
src/main.cpp
11
src/main.cpp
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user