main.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/python
  2. from sys import argv, exit
  3. from src.parser import parse_file
  4. options = {'-v': 1}
  5. # Parse arguments
  6. def exit_with_usage():
  7. print 'Usage: python %s [ options ] SOURCE_FILE' % argv[0]
  8. print 'options: -i SOURCE_OUT_FILE | -o OUT_FILE | -v VERBOSE_LEVEL'
  9. exit(1)
  10. if len(argv) % 2:
  11. exit_with_usage()
  12. elif len(argv) > 2:
  13. values = argv[2:-1:2]
  14. if argv[1][0] != '-':
  15. exit_with_usage()
  16. for i, option in enumerate(argv[1:-1:2]):
  17. if option not in ['-i', '-o', '-v']:
  18. print 'unknown option "%s"' % option
  19. exit(1)
  20. if i >= len(values):
  21. print 'No value given for option "%s"' % option
  22. exit(1)
  23. options[option] = values[i]
  24. # Parse file
  25. program = parse_file(argv[-1])
  26. program.verbose = int(options['-v'])
  27. # Save input assembly in new file for easy comparison
  28. if '-i' in options:
  29. program.save(options['-i'])
  30. # Perform optimizations
  31. program.optimize()
  32. # Save output assembly
  33. if '-o' in options:
  34. program.save(options['-o'])