summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2006-02-09 22:27:41 -0500
committerSteve Reinhardt <stever@eecs.umich.edu>2006-02-09 22:27:41 -0500
commitfb90b1dd13fb6c0090bfe2731ca9ccee56479761 (patch)
tree96d34624975cab81d4061d4f2fb5b285e7bd9428
parent2c528d5865b47de45e0bb85fad86b0cf768ed278 (diff)
downloadgem5-fb90b1dd13fb6c0090bfe2731ca9ccee56479761.tar.xz
Minor cleanup of include-handling code in isa_parser.py.
arch/isa_parser.py: Clean up ##include code a bit. arch/sparc/isa/formats.isa: arch/sparc/isa/main.isa: Fix include paths. --HG-- extra : convert_revision : 0689963c2948e5f1088ecbf2cf6018d29bdaceff
-rwxr-xr-xarch/isa_parser.py32
-rw-r--r--arch/sparc/isa/formats.isa12
-rw-r--r--arch/sparc/isa/main.isa12
3 files changed, 30 insertions, 26 deletions
diff --git a/arch/isa_parser.py b/arch/isa_parser.py
index fc6880877..b12329ebb 100755
--- a/arch/isa_parser.py
+++ b/arch/isa_parser.py
@@ -162,7 +162,7 @@ def t_CPPDIRECTIVE(t):
return t
def t_NEWFILE(t):
- r'^\#\#newfile[ /t]*\"[A-Za-z0-9\\/-_.]*\"'
+ r'^\#\#newfile\s+"[\w/.-]*"'
global fileNameStack
fileNameStack.append((t.value[11:-1], t.lineno))
t.lineno = 0
@@ -841,7 +841,7 @@ defaultStack = Stack( None )
# Used to make nested code blocks look pretty.
#
def indent(s):
- return re.sub(r'(?m)^(?!\#)', ' ', s)
+ return re.sub(r'(?m)^(?!#)', ' ', s)
#
# Munge a somewhat arbitrarily formatted piece of Python code
@@ -870,7 +870,6 @@ def fixPythonIndentation(s):
# Error handler. Just call exit. Output formatted to work under
# Emacs compile-mode.
def error(lineno, string):
- global fileNameStack
spaces = ""
for (filename, line) in fileNameStack[0:-1]:
print spaces + "In file included from " + filename
@@ -1622,24 +1621,29 @@ def update_if_needed(file, contents):
f.close()
# This regular expression matches include directives
-regExp = re.compile('(?P<include>^[ \t]*##include[ \t]*\"[ \t]*(?P<filename>[A-Za-z0-9\\/-_.]*)[ \t]*\"[ \t]*\n)', re.MULTILINE)
+includeRE = re.compile(r'^\s*##include\s+"(?P<filename>[\w/.-]*)".*$',
+ re.MULTILINE)
def preprocess_isa_desc(isa_desc):
# Find any includes and include them
-
- # Look for an include
- m = re.search(regExp, isa_desc)
- while m:
+ pos = 0
+ while 1:
+ m = includeRE.search(isa_desc, pos)
+ if not m:
+ break
filename = m.group('filename')
print 'Including file "%s"' % filename
- includeFile = open(filename)
- includecontents = includeFile.read()
- isa_desc = isa_desc[:m.start('include')] + '##newfile "' + filename + '"\n' + includecontents + '##endfile\n' + isa_desc[m.end('include'):]
- # Look for the next include
- m = re.search(regExp, isa_desc)
+ try:
+ isa_desc = isa_desc[:m.start()] + \
+ '##newfile "' + filename + '"\n' + \
+ open(filename).read() + \
+ '##endfile\n' + \
+ isa_desc[m.end():]
+ except IOError:
+ error(0, 'Error including file "%s"' % (filename))
+ pos = m.start()
return isa_desc
-
#
# Read in and parse the ISA description.
#
diff --git a/arch/sparc/isa/formats.isa b/arch/sparc/isa/formats.isa
index a21e1c110..547f8be48 100644
--- a/arch/sparc/isa/formats.isa
+++ b/arch/sparc/isa/formats.isa
@@ -1,19 +1,19 @@
//Include the basic format
//Templates from this format are used later
-##include "m5/arch/sparc/isa_desc/formats/basic.isa"
+##include "m5/arch/sparc/isa/formats/basic.isa"
//Include the integerOp and integerOpCc format
-##include "m5/arch/sparc/isa_desc/formats/integerop.isa"
+##include "m5/arch/sparc/isa/formats/integerop.isa"
//Include the mem format
-##include "m5/arch/sparc/isa_desc/formats/mem.isa"
+##include "m5/arch/sparc/isa/formats/mem.isa"
//Include the trap format
-##include "m5/arch/sparc/isa_desc/formats/trap.isa"
+##include "m5/arch/sparc/isa/formats/trap.isa"
//Include the branch format
-##include "m5/arch/sparc/isa_desc/formats/branch.isa"
+##include "m5/arch/sparc/isa/formats/branch.isa"
//Include the noop format
-##include "m5/arch/sparc/isa_desc/formats/noop.isa"
+##include "m5/arch/sparc/isa/formats/noop.isa"
diff --git a/arch/sparc/isa/main.isa b/arch/sparc/isa/main.isa
index 8b6166d34..ab0290d58 100644
--- a/arch/sparc/isa/main.isa
+++ b/arch/sparc/isa/main.isa
@@ -26,7 +26,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-##include "m5/arch/sparc/isa_desc/includes.isa"
+##include "m5/arch/sparc/isa/includes.isa"
////////////////////////////////////////////////////////////////////
//
@@ -37,16 +37,16 @@
namespace SparcISA;
//Include the bitfield definitions
-##include "m5/arch/sparc/isa_desc/bitfields.isa"
+##include "m5/arch/sparc/isa/bitfields.isa"
//Include the operand_types and operand definitions
-##include "m5/arch/sparc/isa_desc/operands.isa"
+##include "m5/arch/sparc/isa/operands.isa"
//Include the base class for sparc instructions, and some support code
-##include "m5/arch/sparc/isa_desc/base.isa"
+##include "m5/arch/sparc/isa/base.isa"
//Include the definitions for the instruction formats
-##include "m5/arch/sparc/isa_desc/formats.isa"
+##include "m5/arch/sparc/isa/formats.isa"
//Include the decoder definition
-##include "m5/arch/sparc/isa_desc/decoder.isa"
+##include "m5/arch/sparc/isa/decoder.isa"