Token to_string now include source name and is printed error style
So instead of the previous weird format, we have the format <source_name>:<line>:<column>: <TYPE> which also allows me to quickly go to that token via Emacs' (compile).
This commit is contained in:
@@ -556,13 +556,13 @@ namespace Lexer
|
|||||||
std::string to_string(const Token &t)
|
std::string to_string(const Token &t)
|
||||||
{
|
{
|
||||||
std::stringstream stream;
|
std::stringstream stream;
|
||||||
stream << to_string(t.type);
|
stream << t.source_name << ":" << t.line << ":" << t.column << ": "
|
||||||
|
<< to_string(t.type);
|
||||||
|
|
||||||
if (t.operand_type != Token::OperandType::NIL)
|
if (t.operand_type != Token::OperandType::NIL)
|
||||||
stream << "[" << to_string(t.operand_type) << "]";
|
stream << "[" << to_string(t.operand_type) << "]";
|
||||||
if (t.content != "")
|
if (t.content != "")
|
||||||
stream << "(`" << t.content << "`)";
|
stream << "(`" << t.content << "`)";
|
||||||
stream << "@" << t.line << ", " << t.column;
|
|
||||||
return stream.str();
|
return stream.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ namespace Lexer
|
|||||||
|
|
||||||
Err();
|
Err();
|
||||||
|
|
||||||
Err(Type type, size_t col, size_t line, std::string_view source_name);
|
Err(Type type, size_t col, size_t line, std::string_view source_name = "");
|
||||||
};
|
};
|
||||||
|
|
||||||
Err tokenise_buffer(std::string_view source_name, std::string_view content,
|
Err tokenise_buffer(std::string_view source_name, std::string_view content,
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ 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 *> tokens, preprocessed_tokens;
|
vector<Token *> tokens;
|
||||||
Lex_Err lerr;
|
Lex_Err lerr;
|
||||||
|
|
||||||
// Highest scoped variable cut off point
|
// Highest scoped variable cut off point
|
||||||
@@ -87,7 +87,7 @@ int main(int argc, const char *argv[])
|
|||||||
src = string_view{source_str};
|
src = string_view{source_str};
|
||||||
lerr = tokenise_buffer(source_name, src, tokens);
|
lerr = tokenise_buffer(source_name, src, tokens);
|
||||||
|
|
||||||
if (lerr.type != Lexer ::Err::Type::OK)
|
if (lerr.type != Lex_Err::Type::OK)
|
||||||
{
|
{
|
||||||
cerr << lerr << endl;
|
cerr << lerr << endl;
|
||||||
ret = 255 - static_cast<int>(lerr.type);
|
ret = 255 - static_cast<int>(lerr.type);
|
||||||
@@ -95,7 +95,6 @@ int main(int argc, const char *argv[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
#if VERBOSE >= 1
|
#if VERBOSE >= 1
|
||||||
printf("[%sLEXER%s]: %lu bytes -> %lu tokens\n", TERM_GREEN, TERM_RESET,
|
printf("[%sLEXER%s]: %lu bytes -> %lu tokens\n", TERM_GREEN, TERM_RESET,
|
||||||
source_str.size(), tokens.size());
|
source_str.size(), tokens.size());
|
||||||
|
|||||||
Reference in New Issue
Block a user