Exemple #1
0
 def BuildSymbolTable(self, code):
     elements = []
     #first pass: search for label symbols
     j = 0
     for i in range(len(code)):
         if self.IsLabel(code[i]):
             elements.append(code[i])
             SymbolTable.SYMBOL_TABLE[self.IsLabel(
                 code[i]).group(1)] = i - j
             j += 1
     for i in elements:
         code.remove(i)
     #second pass: search for variables
     for i in code:
         if i[0] == "@" and not self.IsAInstruction(i):
             if not SymbolTable.HasSymbol(i):
                 SymbolTable.VarAlloc(i)
     for i in code:
         if i[0] == "@":
             if SymbolTable.HasSymbol(i):
                 code[code.index(i)] = "@" + str(
                     SymbolTable.SYMBOL_TABLE[i[1:]])