Make tablegen take an input filename to parse if one is specified, otherwise

use stdin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7431 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-07-30 19:48:02 +00:00
parent 35c7444e52
commit 90523906fa
4 changed files with 42 additions and 12 deletions

View File

@ -24,12 +24,24 @@ typedef std::pair<Record*, std::vector<Init*>*> SubClassRefTy;
static std::vector<std::pair<std::pair<std::string, std::vector<unsigned>*>, static std::vector<std::pair<std::pair<std::string, std::vector<unsigned>*>,
Init*> > SetStack; Init*> > SetStack;
void ParseFile() { void ParseFile(const std::string &Filename) {
FILE *F = stdin; FILE *F = stdin;
if (Filename != "-") {
F = fopen(Filename.c_str(), "r");
if (F == 0) {
std::cerr << "Could not open input file '" + Filename + "'!\n";
abort();
}
}
Filein = F; Filein = F;
Filelineno = 1; Filelineno = 1;
Fileparse(); Fileparse();
if (F != stdin)
fclose(F);
Filein = stdin; Filein = stdin;
} }

View File

@ -29,13 +29,16 @@ namespace {
Class("class", cl::desc("Print Enum list for this class"), Class("class", cl::desc("Print Enum list for this class"),
cl::value_desc("class name")); cl::value_desc("class name"));
cl::opt<std::string> cl::opt<std::string>
OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"), OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"),
cl::init("-")); cl::init("-"));
cl::opt<std::string>
InputFilename(cl::Positional, cl::desc("<input file>"), cl::init("-"));
} }
void ParseFile(); void ParseFile(const std::string &Filename);
RecordKeeper Records; RecordKeeper Records;
@ -379,7 +382,7 @@ static void ParseMachineCode() {
int main(int argc, char **argv) { int main(int argc, char **argv) {
cl::ParseCommandLineOptions(argc, argv); cl::ParseCommandLineOptions(argc, argv);
ParseFile(); ParseFile(InputFilename);
std::ostream *Out = &std::cout; std::ostream *Out = &std::cout;
if (OutputFilename != "-") { if (OutputFilename != "-") {

View File

@ -24,12 +24,24 @@ typedef std::pair<Record*, std::vector<Init*>*> SubClassRefTy;
static std::vector<std::pair<std::pair<std::string, std::vector<unsigned>*>, static std::vector<std::pair<std::pair<std::string, std::vector<unsigned>*>,
Init*> > SetStack; Init*> > SetStack;
void ParseFile() { void ParseFile(const std::string &Filename) {
FILE *F = stdin; FILE *F = stdin;
if (Filename != "-") {
F = fopen(Filename.c_str(), "r");
if (F == 0) {
std::cerr << "Could not open input file '" + Filename + "'!\n";
abort();
}
}
Filein = F; Filein = F;
Filelineno = 1; Filelineno = 1;
Fileparse(); Fileparse();
if (F != stdin)
fclose(F);
Filein = stdin; Filein = stdin;
} }

View File

@ -29,13 +29,16 @@ namespace {
Class("class", cl::desc("Print Enum list for this class"), Class("class", cl::desc("Print Enum list for this class"),
cl::value_desc("class name")); cl::value_desc("class name"));
cl::opt<std::string> cl::opt<std::string>
OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"), OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"),
cl::init("-")); cl::init("-"));
cl::opt<std::string>
InputFilename(cl::Positional, cl::desc("<input file>"), cl::init("-"));
} }
void ParseFile(); void ParseFile(const std::string &Filename);
RecordKeeper Records; RecordKeeper Records;
@ -379,7 +382,7 @@ static void ParseMachineCode() {
int main(int argc, char **argv) { int main(int argc, char **argv) {
cl::ParseCommandLineOptions(argc, argv); cl::ParseCommandLineOptions(argc, argv);
ParseFile(); ParseFile(InputFilename);
std::ostream *Out = &std::cout; std::ostream *Out = &std::cout;
if (OutputFilename != "-") { if (OutputFilename != "-") {