simplify the lexer a bit, pulling stuff out of the default case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45540 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-01-03 17:58:54 +00:00
Родитель 3ba5a0f90a
Коммит 3a57077668
1 изменённых файлов: 27 добавлений и 19 удалений

Просмотреть файл

@ -1275,7 +1275,15 @@ LexNextToken:
}
goto LexNextToken; // GCC isn't tail call eliminating.
case 'L':
// C99 6.4.4.1: Integer Constants.
// C99 6.4.4.2: Floating Constants.
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
return LexNumericConstant(Result, CurPtr);
case 'L': // Identifier (Loony) or wide literal (L'x' or L"xyz").
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
Char = getCharAndSize(CurPtr, SizeTmp);
@ -1303,14 +1311,17 @@ LexNextToken:
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
return LexIdentifier(Result, CurPtr);
case '$': // $ in identifiers.
if (Features.DollarIdents) {
Diag(CurPtr-1, diag::ext_dollar_in_identifier);
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
return LexIdentifier(Result, CurPtr);
}
// C99 6.4.4.1: Integer Constants.
// C99 6.4.4.2: Floating Constants.
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
return LexNumericConstant(Result, CurPtr);
Result.setKind(tok::unknown);
break;
// C99 6.4.4: Character Constants.
case '\'':
@ -1626,21 +1637,18 @@ LexNextToken:
}
break;
case '@':
// Objective C support.
if (CurPtr[-1] == '@' && Features.ObjC1)
Result.setKind(tok::at);
else
Result.setKind(tok::unknown);
break;
case '\\':
// FIXME: UCN's.
// FALL THROUGH.
default:
// Objective C support.
if (CurPtr[-1] == '@' && Features.ObjC1) {
Result.setKind(tok::at);
break;
} else if (CurPtr[-1] == '$' && Features.DollarIdents) {// $ in identifiers.
Diag(CurPtr-1, diag::ext_dollar_in_identifier);
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
return LexIdentifier(Result, CurPtr);
}
Result.setKind(tok::unknown);
break;
}