Support failure tests

This commit is contained in:
2024-03-23 14:53:26 +01:00
parent a78e08521e
commit 30f80bcb88
14 changed files with 241 additions and 53 deletions

View File

@ -1,4 +1,5 @@
#include "elna/source/lexer.hpp"
#include <cassert>
#include <variant>
#include <sstream>
@ -212,6 +213,60 @@ namespace elna::source
|| of() == type::boolean;
}
std::string token::to_string() const
{
switch (this->m_type)
{
case type::number:
return "«number»";
case type::boolean:
return "«boolean»";
case type::term_operator:
return "«term_operator»";
case type::let:
return "«const»";
case type::identifier:
return "«identifier»";
case type::equals:
return "«=»";
case type::var:
return "«var»";
case type::semicolon:
return "«;»";
case type::left_paren:
return "«(»";
case type::right_paren:
return "«)»";
case type::dot:
return "«)»";
case type::comma:
return "«,»";
case type::factor_operator:
return "«*»";
case type::eof:
return "«EOF»";
case type::begin:
return "«begin»";
case type::end:
return "«end»";
case type::assignment:
return "«:=»";
case type::colon:
return "«:»";
case type::when:
return "«if»";
case type::then:
return "«then»";
case type::_while:
return "«while»";
case type::_do:
return "«do»";
case type::procedure:
return "«proc»";
};
assert(false);
}
unexpected_character::unexpected_character(const std::string& character, const source::position position)
: error(position), character(character)
{
@ -233,7 +288,7 @@ namespace elna::source
std::string unexpected_token::what() const
{
return "Unexpected token";
return "Unexpected token " + m_token.to_string();
}
lexer::lexer(std::vector<token>&& tokens, const position last_position)