Human readable token type names for error reporting
This commit is contained in:
parent
605533de32
commit
9c4b57f217
18
src/lexer.cc
18
src/lexer.cc
@ -240,3 +240,21 @@ std::ostream& operator<<(std::ostream& os, Token::Type type)
|
|||||||
}
|
}
|
||||||
unreachable();
|
unreachable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string_view type_name(Token::Type type)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case Token::Type::Chord: return "chord";
|
||||||
|
case Token::Type::Close_Block: return "]";
|
||||||
|
case Token::Type::Close_Paren: return ")";
|
||||||
|
case Token::Type::Expression_Separator: return "|";
|
||||||
|
case Token::Type::Keyword: return "keyword";
|
||||||
|
case Token::Type::Numeric: return "numeric";
|
||||||
|
case Token::Type::Open_Block: return "[";
|
||||||
|
case Token::Type::Open_Paren: return "(";
|
||||||
|
case Token::Type::Operator: return "operator";
|
||||||
|
case Token::Type::Parameter_Separator: return "parameter separator";
|
||||||
|
case Token::Type::Symbol: return "symbol";
|
||||||
|
}
|
||||||
|
unreachable();
|
||||||
|
}
|
||||||
|
@ -350,6 +350,8 @@ struct Token
|
|||||||
Location location;
|
Location location;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::string_view type_name(Token::Type type);
|
||||||
|
|
||||||
/// Token debug printing
|
/// Token debug printing
|
||||||
std::ostream& operator<<(std::ostream& os, Token const& tok);
|
std::ostream& operator<<(std::ostream& os, Token const& tok);
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ Result<Ast> Parser::parse_variable_declaration()
|
|||||||
Error error;
|
Error error;
|
||||||
errors::Expected_Keyword kw { .keyword = "var" };
|
errors::Expected_Keyword kw { .keyword = "var" };
|
||||||
if (token_id >= tokens.size()) {
|
if (token_id >= tokens.size()) {
|
||||||
kw.received_type = ""; // TODO Token type
|
kw.received_type = type_name(peek()->type);
|
||||||
error.location = peek()->location;
|
error.location = peek()->location;
|
||||||
}
|
}
|
||||||
error.details = std::move(kw);
|
error.details = std::move(kw);
|
||||||
@ -170,7 +170,7 @@ Result<Ast> Parser::parse_atomic_expression()
|
|||||||
default:
|
default:
|
||||||
return Error {
|
return Error {
|
||||||
.details = errors::internal::Unexpected_Token {
|
.details = errors::internal::Unexpected_Token {
|
||||||
.type = "", // TODO fill type
|
.type = type_name(peek()->type),
|
||||||
.source = peek()->source,
|
.source = peek()->source,
|
||||||
.when = "atomic expression parsing"
|
.when = "atomic expression parsing"
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user