Allow specification of anonymous definitions
authorChris Lattner <sabre@nondot.org>
Wed, 30 Jul 2003 04:26:44 +0000 (04:26 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 30 Jul 2003 04:26:44 +0000 (04:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7408 91177308-0d34-0410-b5e6-96231b3b80d8

support/tools/TableGen/FileParser.y
utils/TableGen/FileParser.y

index b0161f2317526f463cffbf17aec6fec861a881a8..7a374e178fd09106d0d87b4a9ea1121d6e875f0c 100644 (file)
@@ -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 {
index b0161f2317526f463cffbf17aec6fec861a881a8..7a374e178fd09106d0d87b4a9ea1121d6e875f0c 100644 (file)
@@ -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 {