-RecordKeeper llvm::Records;
-
-/// ParseFile - this function begins the parsing of the specified tablegen
-/// file.
-static bool ParseFile(const std::string &Filename,
- const std::vector<std::string> &IncludeDirs) {
- std::string ErrorStr;
- MemoryBuffer *F = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), &ErrorStr);
- if (F == 0) {
- cerr << "Could not open input file '" + Filename + "': " << ErrorStr <<"\n";
- return true;
- }
-
- TGParser Parser(F);
-
- // Record the location of the include directory so that the lexer can find
- // it later.
- Parser.setIncludeDirs(IncludeDirs);
-
- return Parser.ParseFile();
-}
-
-int main(int argc, char **argv) {
- cl::ParseCommandLineOptions(argc, argv);
-
- // Parse the input file.
- if (ParseFile(InputFilename, IncludeDirs))
- return 1;
-
- std::ostream *Out = cout.stream();
- if (OutputFilename != "-") {
- Out = new std::ofstream(OutputFilename.c_str());
-
- if (!Out->good()) {
- cerr << argv[0] << ": error opening " << OutputFilename << "!\n";
- return 1;
- }
-
- // Make sure the file gets removed if *gasp* tablegen crashes...
- sys::RemoveFileOnSignal(sys::Path(OutputFilename));
- }
-
- try {