【发布时间】:2015-07-13 18:15:15
【问题描述】:
今年夏天,我正在学习 nand2tetris 课程,目前正在进行第 6 章项目(构建汇编程序)。我之所以选择 Python,是因为这本可爱的字典的存在。问题是我似乎无法正确工作/创建/访问一个。在遵循本章的 API 时,他们为汇编程序推荐了 3 个不同的类,即 Parser 类、SymbolTable 类和 Code 类。
我们构建的机器具有以下指定的内存。已专门用于预定义符号的位置。
因此使用以下 PreAllocated 内存位置:
SP - (hex 00000, bin 0000000000000000)
LCL - (hex 00001, bin 0000000000000001)
ARG - (hex 00002, bin 0000000000000010)
THIS - (hex 00003, bin 0000000000000011)
THAT - (hex 0004, bin 0000000000000100)
R0-R15 - (hex 000[0-15], bin 000000000000[0-1111])
SCREEN - (hex 04000, bin 0100000000000000)
KBD - (hex 06000, bin 0110000000000000)
我想以表本身就是对象的方式创建类,并且在实例化时自然分配这些 {'key': value} 对。
symbolTable.py:
class symbolTable(object):
def __init__(self):
self.table = {'SP': 0000000000000000, 'LCL': 0000000000000001,
'ARG': 0000000000000010, 'THIS': 0000000000000011,
'THAT': 0000000000000100, 'R0': 0000000000000000,
'R1': 0000000000000001, 'R2': 0000000000000010,
'R3': 0000000000000011, 'R4': 000000000000100,
'R5': 0000000000000101, 'R6': 0000000000000110,
'R7': 0000000000000111, 'R8': 0000000000001000,
'R9': 0000000000001001, 'R10': 0000000000001010,
'R11': 0000000000001011, 'R12': 0000000000001100,
'R13': 0000000000001101, 'R14': 0000000000001110,
'R15': 0000000000001111, 'SCREEN': 0100000000000000,
'KBD': 0110000000000000};
在继续添加属性之前,我试图简单地创建这个东西。然而,当我打开并运行我的主文件时,main.py:
__author__ = 'Cheech Wife'
import symbolTable
newTable = symbolTable.SymbolTable()
print newTable
我什么都没得到:
C:\Python27\python.exe "C:/Users/Cheech Wife/Desktop/cs 271/Assembler_ch6/symbolTable.py"
进程以退出代码 0 结束
从我所读的内容来看,文件分离不应该是问题,并且在使用 C++ 时,我非常喜欢分区,并希望文件保持不同。那我做错了什么?
是我试图将我的类的对象作为字典本身的错误吗?当我尝试实例化事物时,我做错了什么吗?
【问题讨论】:
-
您运行的是
main.py还是symbolTable.py? -
您在粘贴实际代码吗?因为案例不完全匹配。
-
还有一个缩进问题(见
__init__)。无论如何,在修复这些错误后,代码可以正常工作。 -
如果你解决了你的语法问题,这很好用。这些常量不是二进制的,而是八进制的,所以你可能也想修复它。哦,没有分号,这是斯巴达。我的意思是,python。
标签: python dictionary