diff options
author | Anders Carlsson <andersca@mac.com> | 2007-08-21 17:43:55 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2007-08-21 17:43:55 +0000 |
commit | 5508518a2702b00be3b15a26d772bde968972f54 (patch) | |
tree | 88bdb86735209ca6b77a2305f26066c843745d87 /Parse/ParseObjc.cpp | |
parent | 5083a536971419786b5f7a5fbadfc228cad5c658 (diff) |
Implement parsing and code generation of Objective-C string literals.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41238 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Parse/ParseObjc.cpp')
-rw-r--r-- | Parse/ParseObjc.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Parse/ParseObjc.cpp b/Parse/ParseObjc.cpp index 192f19990a..e093f19c2c 100644 --- a/Parse/ParseObjc.cpp +++ b/Parse/ParseObjc.cpp @@ -310,3 +310,27 @@ void Parser::ParseObjCInstanceMethodDeclaration() { void Parser::ParseObjCClassMethodDeclaration() { assert(0 && "Unimp"); } + +Parser::ExprResult Parser::ParseObjCExpression() { + SourceLocation AtLoc = ConsumeToken(); // the "@" + + switch (Tok.getKind()) { + case tok::string_literal: // primary-expression: string-literal + case tok::wide_string_literal: + return ParseObjCStringLiteral(); + default: + Diag(AtLoc, diag::err_unexpected_at); + SkipUntil(tok::semi); + break; + } + + return 0; +} + +Parser::ExprResult Parser::ParseObjCStringLiteral() { + ExprResult Res = ParseStringLiteralExpression(); + + if (Res.isInvalid) return Res; + + return Actions.ParseObjCStringLiteral(Res.Val); +} |