From 90eecf3882eb2d8805ff2812d17a97e7ddd6e82d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 3 Mar 2006 01:47:37 +0000 Subject: [PATCH] Regenerate llvm-svn: 26486 --- utils/TableGen/FileLexer.cpp.cvs | 96 +++++++++++++++++--------------- utils/TableGen/FileLexer.l.cvs | 18 +++--- 2 files changed, 61 insertions(+), 53 deletions(-) diff --git a/utils/TableGen/FileLexer.cpp.cvs b/utils/TableGen/FileLexer.cpp.cvs index e1f7b5434ff..f7f374c61cc 100644 --- a/utils/TableGen/FileLexer.cpp.cvs +++ b/utils/TableGen/FileLexer.cpp.cvs @@ -489,7 +489,7 @@ goto find_rule; \ #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 1 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" #define INITIAL 0 /*===-- FileLexer.l - Scanner for TableGen Files ----------------*- C++ -*-===// // @@ -507,7 +507,7 @@ char *yytext; #define YY_NEVER_INTERACTIVE 1 #define comment 1 -#line 30 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 30 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" #include "Record.h" typedef std::pair*> SubClassRefTy; #include "FileParser.h" @@ -517,7 +517,7 @@ int Fileparse(); namespace llvm { // Global variable recording the location of the include directory -std::string IncludeDirectory; +std::vector IncludeDirectories; /// ParseInt - This has to handle the special case of binary numbers 0b0101 /// @@ -555,7 +555,8 @@ std::ostream &err() { /// ParseFile - this function begins the parsing of the specified tablegen file. /// -void ParseFile(const std::string &Filename, const std::string & IncludeDir) { +void ParseFile(const std::string &Filename, + const std::vector &IncludeDirs) { FILE *F = stdin; if (Filename != "-") { F = fopen(Filename.c_str(), "r"); @@ -571,7 +572,7 @@ void ParseFile(const std::string &Filename, const std::string & IncludeDir) { // Record the location of the include directory so that the lexer can find // it later. - IncludeDirectory = IncludeDir; + IncludeDirectories = IncludeDirs; Filein = F; Filelineno = 1; @@ -605,10 +606,13 @@ static void HandleInclude(const char *Buffer) { // If we couldn't find the file in the current directory, look for it in // the include directories. // - // NOTE: Right now, there is only one directory. We need to eventually add - // support for more. - std::string NextFilename = IncludeDirectory + "/" + Filename; - yyin = fopen(NextFilename.c_str(), "r"); + std::string NextFilename; + for (unsigned i = 0, e = IncludeDirectories.size(); i != e; ++i) { + NextFilename = IncludeDirectories[i] + "/" + Filename; + if (yyin = fopen(NextFilename.c_str(), "r")) + break; + } + if (yyin == 0) { err() << "Could not find include file '" << Filename << "'!\n"; exit(1); @@ -644,7 +648,7 @@ int yywrap(void) { using namespace llvm; -#line 648 "Lexer.cpp" +#line 652 "Lexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -795,10 +799,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 176 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 180 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" -#line 802 "Lexer.cpp" +#line 806 "Lexer.cpp" if ( yy_init ) { @@ -891,168 +895,168 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 178 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 182 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { /* Ignore comments */ } YY_BREAK case 2: YY_RULE_SETUP -#line 180 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 184 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { HandleInclude(yytext); } YY_BREAK case 3: YY_RULE_SETUP -#line 181 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 185 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+2, yytext+yyleng-2); return CODEFRAGMENT; } YY_BREAK case 4: YY_RULE_SETUP -#line 184 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 188 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return INT; } YY_BREAK case 5: YY_RULE_SETUP -#line 185 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 189 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return BIT; } YY_BREAK case 6: YY_RULE_SETUP -#line 186 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 190 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return BITS; } YY_BREAK case 7: YY_RULE_SETUP -#line 187 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 191 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return STRING; } YY_BREAK case 8: YY_RULE_SETUP -#line 188 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 192 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return LIST; } YY_BREAK case 9: YY_RULE_SETUP -#line 189 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 193 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return CODE; } YY_BREAK case 10: YY_RULE_SETUP -#line 190 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 194 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return DAG; } YY_BREAK case 11: YY_RULE_SETUP -#line 192 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 196 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return CLASS; } YY_BREAK case 12: YY_RULE_SETUP -#line 193 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 197 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return DEF; } YY_BREAK case 13: YY_RULE_SETUP -#line 194 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 198 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return FIELD; } YY_BREAK case 14: YY_RULE_SETUP -#line 195 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 199 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return LET; } YY_BREAK case 15: YY_RULE_SETUP -#line 196 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 200 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return IN; } YY_BREAK case 16: YY_RULE_SETUP -#line 198 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 202 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return SRATOK; } YY_BREAK case 17: YY_RULE_SETUP -#line 199 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 203 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return SRLTOK; } YY_BREAK case 18: YY_RULE_SETUP -#line 200 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 204 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return SHLTOK; } YY_BREAK case 19: YY_RULE_SETUP -#line 203 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 207 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext, yytext+yyleng); return ID; } YY_BREAK case 20: YY_RULE_SETUP -#line 205 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 209 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng); return VARNAME; } YY_BREAK case 21: YY_RULE_SETUP -#line 208 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 212 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng-1); return STRVAL; } YY_BREAK case 22: YY_RULE_SETUP -#line 211 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 215 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { Filelval.IntVal = ParseInt(Filetext); return INTVAL; } YY_BREAK case 23: YY_RULE_SETUP -#line 213 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 217 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { /* Ignore whitespace */ } YY_BREAK case 24: YY_RULE_SETUP -#line 216 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 220 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { BEGIN(comment); CommentDepth++; } YY_BREAK case 25: YY_RULE_SETUP -#line 217 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 221 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" {} /* eat anything that's not a '*' or '/' */ YY_BREAK case 26: YY_RULE_SETUP -#line 218 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 222 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" {} /* eat up '*'s not followed by '/'s */ YY_BREAK case 27: YY_RULE_SETUP -#line 219 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 223 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { ++CommentDepth; } YY_BREAK case 28: YY_RULE_SETUP -#line 220 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 224 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" {} /* eat up /'s not followed by *'s */ YY_BREAK case 29: YY_RULE_SETUP -#line 221 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 225 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { if (!--CommentDepth) { BEGIN(INITIAL); } } YY_BREAK case YY_STATE_EOF(comment): -#line 222 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 226 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { err() << "Unterminated comment!\n"; exit(1); } YY_BREAK case 30: YY_RULE_SETUP -#line 224 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 228 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" { return Filetext[0]; } YY_BREAK case 31: YY_RULE_SETUP -#line 226 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 230 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1056 "Lexer.cpp" +#line 1060 "Lexer.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1936,6 +1940,6 @@ int main() return 0; } #endif -#line 226 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 230 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l" diff --git a/utils/TableGen/FileLexer.l.cvs b/utils/TableGen/FileLexer.l.cvs index d0457eaa3d4..c561ec64c67 100644 --- a/utils/TableGen/FileLexer.l.cvs +++ b/utils/TableGen/FileLexer.l.cvs @@ -36,7 +36,7 @@ int Fileparse(); namespace llvm { // Global variable recording the location of the include directory -std::string IncludeDirectory; +std::vector IncludeDirectories; /// ParseInt - This has to handle the special case of binary numbers 0b0101 /// @@ -74,7 +74,8 @@ std::ostream &err() { /// ParseFile - this function begins the parsing of the specified tablegen file. /// -void ParseFile(const std::string &Filename, const std::string & IncludeDir) { +void ParseFile(const std::string &Filename, + const std::vector &IncludeDirs) { FILE *F = stdin; if (Filename != "-") { F = fopen(Filename.c_str(), "r"); @@ -90,7 +91,7 @@ void ParseFile(const std::string &Filename, const std::string & IncludeDir) { // Record the location of the include directory so that the lexer can find // it later. - IncludeDirectory = IncludeDir; + IncludeDirectories = IncludeDirs; Filein = F; Filelineno = 1; @@ -124,10 +125,13 @@ static void HandleInclude(const char *Buffer) { // If we couldn't find the file in the current directory, look for it in // the include directories. // - // NOTE: Right now, there is only one directory. We need to eventually add - // support for more. - std::string NextFilename = IncludeDirectory + "/" + Filename; - yyin = fopen(NextFilename.c_str(), "r"); + std::string NextFilename; + for (unsigned i = 0, e = IncludeDirectories.size(); i != e; ++i) { + NextFilename = IncludeDirectories[i] + "/" + Filename; + if (yyin = fopen(NextFilename.c_str(), "r")) + break; + } + if (yyin == 0) { err() << "Could not find include file '" << Filename << "'!\n"; exit(1);