def HandleLine(self, line): loc = sum([x.Size() for x in self.instructions]) for replace,value in self.defines.iteritems(): line = re.sub(replace, value, line) if re.match("^\s*$", line) is not None: return try: m = re.match( r'''^\s*\.DEFINE\s*(?P<label>[_a-zA-Z0-9]+)\s*(?P<value>.*)$''', line) if m is not None: self.defines[m.group('label')] = m.group('value') return m = re.match( r'''^\s*\.STRING\s*(?P<label>[_a-zA-Z0-9]+)\s*(?P<str>".*")''', line) if m is not None: self.RegisterDataLabel(m.group('label'), eval(m.group('str'))) return m = re.match("^\s*(?P<label>[_a-zA-Z0-9]+):\.*$", line) if m is not None: self.RegisterLabel(m.group('label'), loc) return m = re.match("^\s*#.*$", line) if m is not None: return inst = Instruction.parseline(self, loc, line) self.instructions.append(inst) except Exception as e: return None
def HandleLine(self, line): loc = sum([x.Size() for x in self.instructions]) for replace,value in self.defines.iteritems(): line = re.sub(replace, value, line) if re.match("^\s*$", line) is not None: return try: m = re.match( r'''^\s*\.DEFINE\s*(?P<label>[_a-zA-Z0-9]+)\s*(?P<value>.*)$''', line) if m is not None: self.defines[m.group('label')] = m.group('value') return m = re.match( r'''^\s*\.STRING\s*(?P<label>[_a-zA-Z0-9]+)\s*(?P<str>".*")''', line) if m is not None: self.RegisterDataLabel(m.group('label'), eval(m.group('str'))) return m = re.match( r'''^\s*\.WORD\s*(?P<label>[_a-zA-Z0-9]+)\s*''', line) if m is not None: self.RegisterIntLabel(m.group('label')) return m = re.match("^\s*(?P<label>[_a-zA-Z0-9]+):\.*$", line) if m is not None: #print "reg label" self.RegisterLabel(m.group('label'), loc) return m = re.match("^\s*#.*$", line) if m is not None: return inst = Instruction.parseline(self, loc, line) self.instructions.append(inst) except Exception as e: print print traceback.format_exc(e) print "*** Invalid line: '%s'"%(line) print sys.exit(1)
def handle_line(self, line): loc = sum([x.size() for x in self.instructions]) for replace, value in self.defines.iteritems(): line = re.sub(replace, value, line) if re.match("^\s*$", line) is not None: return try: m = re.match( r'''^\s*\.DEFINE\s*(?P<label>[_a-zA-Z0-9]+)\s*(?P<value>.*)$''', line) if m is not None: self.defines[m.group('label')] = m.group('value') return m = re.match( r'''^\s*\.STRING\s*(?P<label>[_a-zA-Z0-9]+)\s*(?P<str>".*")''', line) if m is not None: self.reg_data_label(m.group('label'), eval(m.group('str'))) return m = re.match("^\s*(?P<label>[_a-zA-Z0-9]+):\.*$", line) if m is not None: self.reg_label(m.group('label'), loc) return # Ignore remaining parts m = re.match("^\s*#.*$", line) if m is not None: return inst = Instruction.parseline(self, loc, line) self.instructions.append(inst) # Raise exception if match fails except Exception as e: print traceback.format_exc(e) sys.exit(1)