You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
906 B

  1. import re
  2. COMMAND_RE = re.compile(r'(?P<command>\w+) (?P<subcommand>\w+) ?(?P<params>.*)')
  3. PARAM_RE = re.compile(r'[\w@]+')
  4. def parse_params(param_text):
  5. important_params = []
  6. params = []
  7. for match in PARAM_RE.finditer(param_text):
  8. important = True
  9. s = match.group(0)
  10. params.append(s)
  11. if s == '0' or "@" in s:
  12. important = False
  13. important_params.append(important)
  14. return params, important_params
  15. def parse_command(command_text):
  16. match = COMMAND_RE.match(command_text)
  17. info = match.groupdict()
  18. if info['params'] != '':
  19. parsed_params, important = parse_params(info['params'])
  20. info['params'] = parsed_params
  21. info['important'] = important
  22. else:
  23. info['params'] = []
  24. info['important'] = []
  25. return info
  26. if __name__ == "__main__":
  27. with open('./new.masm') as command_file:
  28. command_text = command_file.read()
  29. l = list(map(parse_command, filter(bool, command_text.split('\n'))))