diff options
author | Chris Lattner <sabre@nondot.org> | 2003-07-30 04:26:44 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-07-30 04:26:44 +0000 |
commit | fc06bf0eaabb68449aaa699c4649799cd31fb5db (patch) | |
tree | 455e80130142d6f98bf0aeadfa17334fb828533a | |
parent | f1b36f9a71eb267f04b7bd3a32aca9bc69f71e97 (diff) | |
download | external_llvm-fc06bf0eaabb68449aaa699c4649799cd31fb5db.zip external_llvm-fc06bf0eaabb68449aaa699c4649799cd31fb5db.tar.gz external_llvm-fc06bf0eaabb68449aaa699c4649799cd31fb5db.tar.bz2 |
Allow specification of anonymous definitions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7408 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | support/tools/TableGen/FileParser.y | 13 | ||||
-rw-r--r-- | utils/TableGen/FileParser.y | 13 |
2 files changed, 18 insertions, 8 deletions
diff --git a/support/tools/TableGen/FileParser.y b/support/tools/TableGen/FileParser.y index b0161f2..7a374e1 100644 --- a/support/tools/TableGen/FileParser.y +++ b/support/tools/TableGen/FileParser.y @@ -6,10 +6,10 @@ %{ #include "Record.h" +#include "Support/StringExtras.h" #include <iostream> #include <algorithm> -#include <string> -#include <stdio.h> +#include <cstdio> #define YYERROR_VERBOSE 1 int yyerror(const char *ErrorMsg); @@ -181,7 +181,7 @@ static void addSubClass(Record *SC, const std::vector<Init*> &TemplateArgs) { %type <Initializer> Value OptValue %type <FieldList> ValueList ValueListNE %type <BitList> BitList OptBitList RBitList -%type <StrVal> Declaration +%type <StrVal> Declaration OptID %start File %% @@ -398,7 +398,12 @@ DeclListNE : Declaration { TemplateArgList : '<' DeclListNE '>' {}; OptTemplateArgList : /*empty*/ | TemplateArgList; -ObjectBody : ID { +OptID : ID { $$ = $1; } | /*empty*/ { $$ = new std::string(); }; + +ObjectBody : OptID { + static unsigned AnonCounter = 0; + if ($1->empty()) + *$1 = "anonymous."+utostr(AnonCounter++); CurRec = new Record(*$1); delete $1; } OptTemplateArgList ClassList { diff --git a/utils/TableGen/FileParser.y b/utils/TableGen/FileParser.y index b0161f2..7a374e1 100644 --- a/utils/TableGen/FileParser.y +++ b/utils/TableGen/FileParser.y @@ -6,10 +6,10 @@ %{ #include "Record.h" +#include "Support/StringExtras.h" #include <iostream> #include <algorithm> -#include <string> -#include <stdio.h> +#include <cstdio> #define YYERROR_VERBOSE 1 int yyerror(const char *ErrorMsg); @@ -181,7 +181,7 @@ static void addSubClass(Record *SC, const std::vector<Init*> &TemplateArgs) { %type <Initializer> Value OptValue %type <FieldList> ValueList ValueListNE %type <BitList> BitList OptBitList RBitList -%type <StrVal> Declaration +%type <StrVal> Declaration OptID %start File %% @@ -398,7 +398,12 @@ DeclListNE : Declaration { TemplateArgList : '<' DeclListNE '>' {}; OptTemplateArgList : /*empty*/ | TemplateArgList; -ObjectBody : ID { +OptID : ID { $$ = $1; } | /*empty*/ { $$ = new std::string(); }; + +ObjectBody : OptID { + static unsigned AnonCounter = 0; + if ($1->empty()) + *$1 = "anonymous."+utostr(AnonCounter++); CurRec = new Record(*$1); delete $1; } OptTemplateArgList ClassList { |