From: Gabe Black Date: Thu, 8 Sep 2011 10:21:14 +0000 (-0700) Subject: ISA parser: Don't look for operands in strings. X-Git-Tag: stable_2012_02_02~97 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f370ac5c186d063bd169c07ea89e1792617264cd;p=gem5.git ISA parser: Don't look for operands in strings. --- diff --git a/src/arch/isa_parser.py b/src/arch/isa_parser.py index e7598ffe8..863c7c70e 100755 --- a/src/arch/isa_parser.py +++ b/src/arch/isa_parser.py @@ -687,8 +687,9 @@ class OperandList(object): 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 @@ class SubOperandList(OperandList): 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 @@ class SubOperandList(OperandList): 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'(^)?[^\S\n]*/(?:\*(.*?)\*/[^\S\n]*|/[^\n]*)($)?',