identifier parser now supports '.' [#CONV-7967]

This commit is contained in:
Vyacheslav Alipov 2013-07-16 15:10:37 +00:00
parent ac42eb45a4
commit 277759146d

View File

@ -135,6 +135,8 @@ bool ParserIdentifier::parseImpl(Pos & pos, Pos end, ASTPtr & node, String & exp
return true;
}
else
{
while (pos != end)
{
while (pos != end
&& ((*pos >= 'a' && *pos <= 'z')
@ -143,6 +145,15 @@ bool ParserIdentifier::parseImpl(Pos & pos, Pos end, ASTPtr & node, String & exp
|| (pos != begin && *pos >= '0' && *pos <= '9')))
++pos;
/// Если следующий символ - точка '.' и за ней следует, не цифра,
/// то продолжаем парсинг имени идентификатора
if (pos != begin && pos + 1 < end && *pos == '.' &&
!(*(pos + 1) >= '0' && *(pos + 1) <= '9'))
++pos;
else
break;
}
if (pos != begin)
{
node = new ASTIdentifier(StringRange(begin, pos), String(begin, pos - begin));