Compare commits
2
Commits
3e69abdfa0
...
827286a0b2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
827286a0b2 | ||
|
|
9f31a04909 |
+23
-8
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user