使用词典构建汇编程序

时间:2015-07-13 18:15:16

标签: python dictionary

今年夏天,我正在学习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 ++我是分区的忠实粉丝,并希望文件保持不同。那么我做错了什么?

是我试图让我的班级的对象成为字典本身的错误?当我尝试实例化这件事时,我做错了吗?

1 个答案:

答案 0 :(得分:0)

您最后不需要分号或字典。 C / C ++语法残余。 您在SymbolTable中的定义需要缩进。

您的退出代码为0,因为您正在运行symbotTable.py而不是main.py。

你的main.py应该告诉你对象符号的位置。不是它的内容。 类似的东西:

最后你的数字将被解释为八进制而不是二进制。看看Binary numbers in Python