diff options
author | Chris Lattner <sabre@nondot.org> | 2009-03-11 17:08:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-03-11 17:08:13 +0000 |
commit | be0d672ac4cd654bc0836a58c04746ae99d9b257 (patch) | |
tree | 47c97e0a9420318b561dac3985287c92fc65597f /llvm/utils | |
parent | 26897467058db53eb3446af4904c7dbb80897ada (diff) | |
download | bcm5719-llvm-be0d672ac4cd654bc0836a58c04746ae99d9b257.tar.gz bcm5719-llvm-be0d672ac4cd654bc0836a58c04746ae99d9b257.zip |
implement support for C-style string literal concatenation in td files.
llvm-svn: 66663
Diffstat (limited to 'llvm/utils')
-rw-r--r-- | llvm/utils/TableGen/TGParser.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/llvm/utils/TableGen/TGParser.cpp b/llvm/utils/TableGen/TGParser.cpp index 1ea6b9816f6..d31e2a50ee2 100644 --- a/llvm/utils/TableGen/TGParser.cpp +++ b/llvm/utils/TableGen/TGParser.cpp @@ -505,7 +505,7 @@ Init *TGParser::ParseIDValue(Record *CurRec, /// /// SimpleValue ::= IDValue /// SimpleValue ::= INTVAL -/// SimpleValue ::= STRVAL +/// SimpleValue ::= STRVAL+ /// SimpleValue ::= CODEFRAGMENT /// SimpleValue ::= '?' /// SimpleValue ::= '{' ValueList '}' @@ -523,7 +523,19 @@ Init *TGParser::ParseSimpleValue(Record *CurRec) { switch (Lex.getCode()) { default: TokError("Unknown token when parsing a value"); break; case tgtok::IntVal: R = new IntInit(Lex.getCurIntVal()); Lex.Lex(); break; - case tgtok::StrVal: R = new StringInit(Lex.getCurStrVal()); Lex.Lex(); break; + case tgtok::StrVal: { + std::string Val = Lex.getCurStrVal(); + Lex.Lex(); + + // Handle multiple consequtive concatenated strings. + while (Lex.getCode() == tgtok::StrVal) { + Val += Lex.getCurStrVal(); + Lex.Lex(); + } + + R = new StringInit(Val); + break; + } case tgtok::CodeFragment: R = new CodeInit(Lex.getCurStrVal()); Lex.Lex(); break; case tgtok::question: R = new UnsetInit(); Lex.Lex(); break; |