main.cpp now preprocesses tokens and prints the output
This commit is contained in:
35
asm/main.cpp
35
asm/main.cpp
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "./base.hpp"
|
#include "./base.hpp"
|
||||||
#include "./lexer.hpp"
|
#include "./lexer.hpp"
|
||||||
|
#include "./preprocesser.hpp"
|
||||||
|
|
||||||
using std::pair, std::string, std::string_view, std::vector;
|
using std::pair, std::string, std::string_view, std::vector;
|
||||||
|
|
||||||
@@ -48,8 +49,11 @@ int main(int argc, const char *argv[])
|
|||||||
string source_str;
|
string source_str;
|
||||||
string_view original;
|
string_view original;
|
||||||
string_view src;
|
string_view src;
|
||||||
vector<token_t *> tokens;
|
vector<token_t *> tokens, preprocessed_tokens;
|
||||||
lerr_t lerr;
|
lerr_t lerr;
|
||||||
|
pp_err_t pp_err;
|
||||||
|
|
||||||
|
// Highest scoped variable cut off point
|
||||||
|
|
||||||
if (file_source.has_value())
|
if (file_source.has_value())
|
||||||
source_str = file_source.value();
|
source_str = file_source.value();
|
||||||
@@ -86,15 +90,40 @@ int main(int argc, const char *argv[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
std::cout << "LEXER: \n"
|
||||||
|
"-------------------------------------------------------------"
|
||||||
|
"-------------------\n";
|
||||||
for (auto token : tokens)
|
for (auto token : tokens)
|
||||||
{
|
std::cout << "\t" << *token << std::endl;
|
||||||
std::cout << "\t" << token << std::endl;
|
std::cout << "-------------------------------------------------------------"
|
||||||
|
"-------------------\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// preprocessing
|
||||||
|
std::tie(preprocessed_tokens, pp_err) = preprocesser(tokens);
|
||||||
|
if (pp_err.type != pp_err_type_t::OK)
|
||||||
|
{
|
||||||
|
std::cerr << file_name << ":" << pp_err.reference->line << ":"
|
||||||
|
<< pp_err.reference->column << ":" << pp_err << std::endl;
|
||||||
|
ret = 255 - static_cast<int>(pp_err.type);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << "PREPROCESSER: \n"
|
||||||
|
"-------------------------------------------------------------"
|
||||||
|
"-------------------\n";
|
||||||
|
for (auto token : preprocessed_tokens)
|
||||||
|
std::cout << "\t" << *token << std::endl;
|
||||||
|
std::cout << "-------------------------------------------------------------"
|
||||||
|
"-------------------\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
for (auto token : tokens)
|
for (auto token : tokens)
|
||||||
delete token;
|
delete token;
|
||||||
|
for (auto token : preprocessed_tokens)
|
||||||
|
delete token;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user