Fix SimpleLexer not being able to read escaped strings

This commit is contained in:
Jan
2023-09-23 14:28:59 +02:00
parent 7d0abaf256
commit 88bc1c1056
6 changed files with 154 additions and 3 deletions

View File

@ -14,7 +14,7 @@ SimpleLexer::MultiCharacterTokenLookupEntry::MultiCharacterTokenLookupEntry(cons
SimpleLexer::SimpleLexer(IParserLineStream* stream)
: AbstractLexer(stream),
m_config{false, true, true, true, {}},
m_config{false, true, false, true, true, {}},
m_check_for_multi_character_tokens(false),
m_last_line(1)
{
@ -31,7 +31,7 @@ SimpleLexer::SimpleLexer(IParserLineStream* stream, Config config)
m_config.m_multi_character_tokens.clear();
// If reading floating point numbers then must be reading integers
assert(config.m_read_floating_point_numbers == false || config.m_read_floating_point_numbers == config.m_read_integer_numbers);
assert(m_config.m_read_floating_point_numbers == false || m_config.m_read_floating_point_numbers == m_config.m_read_integer_numbers);
}
void SimpleLexer::AddMultiCharacterTokenConfigToLookup(Config::MultiCharacterToken tokenConfig)
@ -121,7 +121,7 @@ SimpleParserValue SimpleLexer::GetNextToken()
}
if (m_config.m_read_strings && c == '\"')
return SimpleParserValue::String(pos, new std::string(ReadString()));
return SimpleParserValue::String(pos, new std::string(m_config.m_string_escape_sequences ? ReadStringWithEscapeSequences() : ReadString()));
if (m_config.m_read_integer_numbers && (isdigit(c) || (c == '+' || c == '-' || (m_config.m_read_floating_point_numbers && c == '.')) && isdigit(PeekChar())))
{

View File

@ -24,6 +24,7 @@ public:
bool m_emit_new_line_tokens;
bool m_read_strings;
bool m_string_escape_sequences;
bool m_read_integer_numbers;
bool m_read_floating_point_numbers;
std::vector<MultiCharacterToken> m_multi_character_tokens;