[Wisp-cvs] wisp/users/dig tran.py,1.1,1.2
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-04-12 17:46:28
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv10219 Modified Files: tran.py Log Message: use getopt for command line parsing Index: tran.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran.py,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- tran.py 12 Apr 2003 11:17:57 -0000 1.1 +++ tran.py 12 Apr 2003 17:46:24 -0000 1.2 @@ -10,12 +10,13 @@ from __future__ import generators +from getopt import getopt +from linkie import Linkie from shlex import shlex from types import * import elf import string import sys -from linkie import Linkie class Lexer (shlex): def __init__ (this, instream = None, infile = None): @@ -220,7 +221,6 @@ Macrostack = [] Registers = {Generic_Register: 'reg'} # for reverse translation -lex = Lexer(instream = open(sys.argv[1], 'r'), infile = sys.argv[1]) def get_token (): if Macrostack: @@ -238,13 +238,24 @@ State(tok) tok = get_token() -mainloop() -print 'TEXT'; Text.dump() -print 'DATA'; Data.dump() -if Regstack: - raise 'Regstack not empty after parsing ended', Regstack -binary = elf.make_ELF32_executable(text = Text, data = Data, want_symbols = 1) +def main (): + global lex + opts, args = getopt(sys.argv[1:], 'o:', ['output=']) + if len(args) != 1: + raise 'Invalid argument count -- must be 1', args + lex = Lexer(instream = open(args[0], 'r'), infile = args[0]) + output_name = 'a.out' + for opt, arg in opts: + if opt in ('-o', '--output'): output_name = arg + mainloop() + print 'TEXT'; Text.dump() + print 'DATA'; Data.dump() + if Regstack: + raise 'Regstack not empty after parsing ended', Regstack + binary = elf.make_ELF32_executable(text = Text, data = Data, + want_symbols = 1) + f = open(output_name, 'w') + binary.get_file().tofile(f) + f.close() -f = open('a.out', 'w') -binary.get_file().tofile(f) -f.close() +main() |