diff -r 6c645c24bc78 -r beeec3e28150 src/arch/isa_parser.py --- a/src/arch/isa_parser.py Mon Sep 05 19:31:21 2011 -0700 +++ b/src/arch/isa_parser.py Mon Sep 05 21:49:38 2011 -0700 @@ -687,8 +687,9 @@ def __init__(self, parser, code): self.items = [] self.bases = {} - # delete comments so we don't match on reg specifiers inside - code = commentRE.sub('', code) + # delete strings and comments so we don't match on operands inside + for regEx in (stringRE, commentRE): + code = regEx.sub('', code) # search for operands next_pos = 0 while 1: @@ -802,8 +803,9 @@ def __init__(self, parser, code, master_list): self.items = [] self.bases = {} - # delete comments so we don't match on reg specifiers inside - code = commentRE.sub('', code) + # delete strings and comments so we don't match on operands inside + for regEx in (stringRE, commentRE): + code = regEx.sub('', code) # search for operands next_pos = 0 while 1: @@ -854,6 +856,9 @@ error("Code block has more than one memory operand.") self.memOperand = op_desc +# Regular expression object to match C++ strings +stringRE = re.compile(r'"([^"\\]|\\.)*"') + # Regular expression object to match C++ comments # (used in findOperands()) commentRE = re.compile(r'//.*\n|/\*.*\*/', re.MULTILINE)