Парсинг текста в одинарных кавычках

This commit is contained in:
Victor 2015-04-18 16:41:41 +03:00
parent dc4d437021
commit 37d02f5ad9

View File

@ -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;
}
}