ISA parser: Loosen the regular expressions matching filenames.
authorGabe Black <gblack@eecs.umich.edu>
Tue, 7 Jun 2011 07:46:54 +0000 (00:46 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Tue, 7 Jun 2011 07:46:54 +0000 (00:46 -0700)
The regular expressions matching filenames in the ##include directives and the
internally generated ##newfile directives where only looking for filenames
composed of alpha numeric characters, periods, and dashes. In Unix/Linux, the
rules for what characters can be in a filename are much looser than that. This
change replaces those expressions with ones that look for anything other than
a quote character. Technically quote characters are allowed as well so we
should allow escaping them somehow, but the additional complexity probably
isn't worth it.

src/arch/isa_parser.py

index 947742354ba16a36dbfdbaaa89fe19b9bad1aed6..6cc113142a4bc0967cd74b40d545ffad25385143 100755 (executable)
@@ -1215,7 +1215,7 @@ class ISAParser(Grammar):
         return t
 
     def t_NEWFILE(self, t):
-        r'^\#\#newfile\s+"[\w/.-]*"'
+        r'^\#\#newfile\s+"[^"]*"'
         self.fileNameStack.push((t.value[11:-1], t.lexer.lineno))
         t.lexer.lineno = 0
 
@@ -1998,7 +1998,7 @@ StaticInstPtr
             f.close()
 
     # This regular expression matches '##include' directives
-    includeRE = re.compile(r'^\s*##include\s+"(?P<filename>[\w/.-]*)".*$',
+    includeRE = re.compile(r'^\s*##include\s+"(?P<filename>[^"]*)".*$',
                            re.MULTILINE)
 
     def replace_include(self, matchobj, dirname):