aboutsummaryrefslogtreecommitdiff
path: root/Parse/ParseObjc.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2007-08-21 17:43:55 +0000
committerAnders Carlsson <andersca@mac.com>2007-08-21 17:43:55 +0000
commit5508518a2702b00be3b15a26d772bde968972f54 (patch)
tree88bdb86735209ca6b77a2305f26066c843745d87 /Parse/ParseObjc.cpp
parent5083a536971419786b5f7a5fbadfc228cad5c658 (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.cpp24
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);
+}