我已經編寫了一個彙編程序的代碼,但我仍然對python很陌生。
在我的代碼中,我有用戶輸入一個將被轉換成彙編語言的文件。我想我幾乎可以工作,但我無法弄清楚用戶輸入文件名的位置。
我在(我認爲是) IDLE,然後當我打F5它運行在shell中。我收到一個錯誤,但我很確定這是因爲沒有輸入文件名。用戶如何輸入文件名?
用戶應該在哪裏輸入這些東西?這是從python shell還是從命令行完成的,我是否需要將它轉換爲可執行文件?
有人可以幫助澄清用戶輸入所有這些信息?
我會放入一段代碼,雖然我不認爲有必要回答我的問題,但也許它會讓您更好地瞭解我的問題。
if __name__ == '__main__':
import sys
if len(sys.argv) == 1:
print 'need filename'
sys.exit(-1)
table = SymbolTable()
parser = Parser(sys.argv[1])
parser.advance()
line = 0
while parser.hasMoreCommands():
if parser.commandType() == 'L_COMMAND':
table.addEntry(parser.symbol(), line)
else:
line += 1
parser.advance()
code = Code()
parser = Parser(sys.argv[1])
parser.advance()
var_stack = 16
while parser.hasMoreCommands():
cmd_type = parser.commandType()
if cmd_type == 'A_COMMAND':
number = 32768
try:
addr = int(parser.symbol())
except:
if table.contains(parser.symbol()):
addr = table.getAddress(parser.symbol())
else:
table.addEntry(parser.symbol(), var_stack)
addr = var_stack
var_stack += 1
bin_number = bin(number | addr)[3:]
assembly = '0' + bin_number
print assembly
elif cmd_type == 'C_COMMAND':
assembly = '111'
assembly += code.comp(parser.comp())
assembly += code.dest(parser.dest())
assembly += code.jump(parser.jump())
print assembly
parser.advance()
要注意的部分是在開始的第4-6行,它檢查文件名。所以一旦我跑我的節目,我得到「需要文件名」打印到屏幕和看起來像這樣的錯誤消息:
Traceback (most recent call last):
File "C:\Python27\Assembler.py", line 98, in <module>
sys.exit(-1)
SystemExit: -1
所以我在哪裏可以輸入文件名,以避免這個錯誤?
你得到什麼錯誤?請發佈回溯。 – 2013-02-23 06:30:23
@Joel Cornett錯誤在帖子中。它在代碼下面。對不起格式。我會編輯它。 – 2013-02-23 06:36:31
啊,明白了。僅供參考,您可以通過以下方式使其顯示爲代碼:1)在編輯器中選擇文本後按{}}按鈕,2)將其縮進4個或更多空格,或者3)將相關文本放入反引號中。 – 2013-02-23 06:40:42