Bladeren bron

Added command line options to main.py.

Taddeus Kroes 14 jaren geleden
bovenliggende
commit
4542b9c5a5
2 gewijzigde bestanden met toevoegingen van 32 en 12 verwijderingen
  1. 30 10
      main.py
  2. 2 2
      run

+ 30 - 10
main.py

@@ -4,24 +4,44 @@ from sys import argv, exit
 from src.parser import parse_file
 
 
-verbose_level = 2
+options = {'-v': 1}
 
 
 # Parse arguments
-if len(argv) < 2:
-    print 'Usage: python %s SOURCE_FILE [ OUT_FILE [ SOURCE_OUT_FILE ] ]' \
-            % argv[0]
+def exit_with_usage():
+    print 'Usage: python %s [ options ] SOURCE_FILE' % argv[0]
+    print 'options: -i SOURCE_OUT_FILE | -o OUT_FILE | -v VERBOSE_LEVEL'
     exit(1)
 
 
+if len(argv) % 2:
+    exit_with_usage()
+elif len(argv) > 2:
+    values = argv[2:-1:2]
+
+    if argv[1][0] != '-':
+        exit_with_usage()
+
+    for i, option in enumerate(argv[1:-1:2]):
+        if option not in ['-i', '-o', '-v']:
+            print 'unknown option "%s"' % option
+            exit(1)
+
+        if i >= len(values):
+            print 'No value given for option "%s"' % option
+            exit(1)
+
+        options[option] = values[i]
+
+
 # Parse file
-program = parse_file(argv[1])
-program.verbose = verbose_level
+program = parse_file(argv[-1])
+program.verbose = int(options['-v'])
 
 
 # Save input assembly in new file for easy comparison
-if len(argv) > 3:
-    program.save(argv[3])
+if '-i' in options:
+    program.save(options['-i'])
 
 
 # Perform optimizations
@@ -29,5 +49,5 @@ program.optimize()
 
 
 # Save output assembly
-if len(argv) > 2:
-    program.save(argv[2])
+if '-o' in options:
+    program.save(options['-o'])

+ 2 - 2
run

@@ -1,2 +1,2 @@
-#!/bin/sh
-python main.py benchmarks/build/$1.s out.s in.s && meld in.s out.s
+#!/bin/bash
+python main.py -v ${2-1} -i in.s -o out.s benchmarks/build/$1.s && meld in.s out.s