aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-07-30 04:26:44 +0000
committerChris Lattner <sabre@nondot.org>2003-07-30 04:26:44 +0000
commitfc06bf0eaabb68449aaa699c4649799cd31fb5db (patch)
tree455e80130142d6f98bf0aeadfa17334fb828533a
parentf1b36f9a71eb267f04b7bd3a32aca9bc69f71e97 (diff)
downloadexternal_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.y13
-rw-r--r--utils/TableGen/FileParser.y13
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 {