Compare commits

..
2 Commits
+23 -8
View File
@@ -158,7 +158,6 @@ bool Lexer::getString()
{ {
size_t column = m_column; size_t column = m_column;
std::string symbol = ""; std::string symbol = "";
std::string breakOnCharacter = std::string() + '"' + '\r' + '\n' + '\0';
bool escape = false; bool escape = false;
char character = consume(); char character = consume();
@@ -172,7 +171,11 @@ bool Lexer::getString()
continue; continue;
} }
if (!escape && breakOnCharacter.find(character) != std::string::npos) { if (!escape &&
(character == '"'
|| character == '\r'
|| character == '\n'
|| character == '\0')) {
break; break;
} }
@@ -196,23 +199,35 @@ bool Lexer::getString()
bool Lexer::getNumberOrLiteral(Token::Type type) bool Lexer::getNumberOrLiteral(Token::Type type)
{ {
size_t index = m_index;
size_t column = m_column; size_t column = m_column;
std::string symbol = "";
std::string breakOnCharacter = std::string("{}[]:,") + '"' + ' ' + '\t' + '\r' + '\n' + '\0';
for (char character;;) { for (char character;;) {
character = peek(); character = peek();
if (breakOnCharacter.find(character) != std::string::npos) { if (character == '{'
|| character == '}'
|| character == '['
|| character == ']'
|| character == ':'
|| character == ','
|| character == '"'
|| character == ' '
|| character == '\t'
|| character == '\r'
|| character == '\n'
|| character == '\0'
) {
break; break;
} }
symbol += character;
increment(); increment();
} }
decrement();
m_tokens->push_back({ type, m_line, column, symbol }); m_tokens->push_back({ type, m_line, column,
m_job->input().substr(index, m_index - index) });
decrement();
return true; return true;
} }