Парсинг текста в одинарных кавычках
This commit is contained in:
parent
dc4d437021
commit
37d02f5ad9
@ -73,6 +73,7 @@ public final class Lexer {
|
||||
|
||||
private TokenizeState state;
|
||||
private int pos;
|
||||
private char textStartChar;
|
||||
|
||||
private enum TokenizeState {
|
||||
DEFAULT, NUMBER, OPERATOR, WORD, TEXT, COMMENT
|
||||
@ -119,8 +120,9 @@ public final class Lexer {
|
||||
// Число
|
||||
buffer.append(ch);
|
||||
state = TokenizeState.NUMBER;
|
||||
} else if (ch == '"') {
|
||||
// Текст в "кавычках"
|
||||
} else if (ch == '"' || ch == '\'') {
|
||||
// Текст в "кавычках" или 'одинарных'
|
||||
textStartChar = ch;
|
||||
state = TokenizeState.TEXT;
|
||||
} else if (ch == '#') {
|
||||
clearBuffer();
|
||||
@ -160,7 +162,7 @@ public final class Lexer {
|
||||
}
|
||||
|
||||
private void tokenizeText(char ch) {
|
||||
if (ch == '"') {
|
||||
if (ch == textStartChar) {
|
||||
final int len = buffer.length();
|
||||
// Добавляем токен, если не было экранирования символа кавычки.
|
||||
if (len == 0 ||
|
||||
@ -170,7 +172,7 @@ public final class Lexer {
|
||||
}
|
||||
// Экранируем символ кавычки.
|
||||
if (len > 0) {
|
||||
buffer.setCharAt(len - 1, '\"');
|
||||
buffer.setCharAt(len - 1, textStartChar);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user