From 2e724541ff50d6b0accca34adb0fac81fd01233e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 28 Jul 2003 03:49:40 +0000 Subject: [PATCH] Add support for Set statements without {}'s. Now we can just say set Foo = bar in def blah: blahclass {} git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7355 91177308-0d34-0410-b5e6-96231b3b80d8 --- support/tools/TableGen/FileParser.y | 21 ++++++++++++++------- utils/TableGen/FileParser.y | 21 ++++++++++++++------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/support/tools/TableGen/FileParser.y b/support/tools/TableGen/FileParser.y index ab1819c554a..b0161f23175 100644 --- a/support/tools/TableGen/FileParser.y +++ b/support/tools/TableGen/FileParser.y @@ -438,13 +438,20 @@ DefInst : DEF ObjectBody { Object : ClassInst | DefInst; -// Support Set commands wrapping objects... -Object : SET ID OptBitList '=' Value IN { - SetStack.push_back(std::make_pair(std::make_pair(*$2, $3), $5)); - delete $2; - } '{' ObjectList '}' { - delete SetStack.back().first.second; // Delete OptBitList - SetStack.pop_back(); +// SETCommand - A 'SET' statement start... +SETCommand : SET ID OptBitList '=' Value IN { + SetStack.push_back(std::make_pair(std::make_pair(*$2, $3), $5)); + delete $2; +}; + +// Support Set commands wrapping objects... both with and without braces. +Object : SETCommand '{' ObjectList '}' { + delete SetStack.back().first.second; // Delete OptBitList + SetStack.pop_back(); + } + | SETCommand Object { + delete SetStack.back().first.second; // Delete OptBitList + SetStack.pop_back(); }; ObjectList : Object {} | ObjectList Object {}; diff --git a/utils/TableGen/FileParser.y b/utils/TableGen/FileParser.y index ab1819c554a..b0161f23175 100644 --- a/utils/TableGen/FileParser.y +++ b/utils/TableGen/FileParser.y @@ -438,13 +438,20 @@ DefInst : DEF ObjectBody { Object : ClassInst | DefInst; -// Support Set commands wrapping objects... -Object : SET ID OptBitList '=' Value IN { - SetStack.push_back(std::make_pair(std::make_pair(*$2, $3), $5)); - delete $2; - } '{' ObjectList '}' { - delete SetStack.back().first.second; // Delete OptBitList - SetStack.pop_back(); +// SETCommand - A 'SET' statement start... +SETCommand : SET ID OptBitList '=' Value IN { + SetStack.push_back(std::make_pair(std::make_pair(*$2, $3), $5)); + delete $2; +}; + +// Support Set commands wrapping objects... both with and without braces. +Object : SETCommand '{' ObjectList '}' { + delete SetStack.back().first.second; // Delete OptBitList + SetStack.pop_back(); + } + | SETCommand Object { + delete SetStack.back().first.second; // Delete OptBitList + SetStack.pop_back(); }; ObjectList : Object {} | ObjectList Object {};