Use escaped strings with simple lexer whenever appropriate

This commit is contained in:
Jan
2023-09-23 15:21:09 +02:00
parent 88bc1c1056
commit 2cd5d05a19
11 changed files with 22 additions and 41 deletions

View File

@ -32,6 +32,7 @@ std::vector<LocalizeFileEntry> LocalizeFileReader::ReadLocalizeFile()
SimpleLexer::Config lexerConfig;
lexerConfig.m_emit_new_line_tokens = true;
lexerConfig.m_read_strings = true;
lexerConfig.m_string_escape_sequences = false; // Escape sequences are handled inside the Parser itself in the Sequence
lexerConfig.m_read_integer_numbers = false;
lexerConfig.m_read_floating_point_numbers = false;
const auto lexer = std::make_unique<SimpleLexer>(m_stream, std::move(lexerConfig));

View File

@ -18,37 +18,7 @@ SequenceLocalizeFileLanguageValue::SequenceLocalizeFileLanguageValue()
std::string SequenceLocalizeFileLanguageValue::UnescapeValue(const std::string& value)
{
std::ostringstream str;
auto isEscaped = false;
for(const auto c : value)
{
if(isEscaped)
{
switch(c)
{
case 'n':
str << '\n';
break;
case 'r':
str << '\r';
break;
default:
str << c;
break;
}
isEscaped = false;
}
else if(c == '\\')
{
isEscaped = true;
}
else
{
str << c;
}
}
utils::UnescapeStringFromQuotationMarks(str, value);
return str.str();
}

View File

@ -47,6 +47,7 @@ std::vector<std::unique_ptr<CommonStructuredDataDef>> StructuredDataDefReader::R
SimpleLexer::Config lexerConfig;
lexerConfig.m_emit_new_line_tokens = false;
lexerConfig.m_read_strings = true;
lexerConfig.m_string_escape_sequences = true;
lexerConfig.m_read_integer_numbers = true;
lexerConfig.m_read_floating_point_numbers = true;
const auto lexer = std::make_unique<SimpleLexer>(m_stream, std::move(lexerConfig));

View File

@ -22,6 +22,7 @@ bool TechniqueFileReader::ReadTechniqueDefinition() const
SimpleLexer::Config lexerConfig;
lexerConfig.m_emit_new_line_tokens = false;
lexerConfig.m_read_strings = true;
lexerConfig.m_string_escape_sequences = false;
lexerConfig.m_read_integer_numbers = true;
lexerConfig.m_read_floating_point_numbers = true;
const auto lexer = std::make_unique<SimpleLexer>(m_comment_proxy.get(), std::move(lexerConfig));

View File

@ -22,6 +22,7 @@ std::unique_ptr<techset::TechsetDefinition> TechsetFileReader::ReadTechsetDefini
SimpleLexer::Config lexerConfig;
lexerConfig.m_emit_new_line_tokens = false;
lexerConfig.m_read_strings = true;
lexerConfig.m_string_escape_sequences = false;
lexerConfig.m_read_integer_numbers = false;
lexerConfig.m_read_floating_point_numbers = false;
const auto lexer = std::make_unique<SimpleLexer>(m_comment_proxy.get(), std::move(lexerConfig));