Exemplo n.º 1
0
 def eval(self, st):
     ass_mode = True
     if not ass_mode:
         print(self.children[0].eval(st))
     else:
         self.children[0].eval(st)
     Assembly.write_program(["PUSH EBX"])
     Assembly.write_program(["CALL print"])
Exemplo n.º 2
0
    def eval(self, st):
        ass_mode = True
        if ass_mode:
            Assembly.write_program([f"LOOP_{self.identifier}:"])
            self.children[0].eval(st)
            Assembly.write_program([f"CMP EBX, False"])
            Assembly.write_program([f"JE EXIT_{self.identifier}"])
            self.children[1].eval(st)
            Assembly.write_program([f"JMP LOOP_{self.identifier}"])
            Assembly.write_program([f"EXIT_{self.identifier}:"])

        else:
            while self.children[0].eval(st) == True:
                self.children[1].eval(st)
Exemplo n.º 3
0
	def eval(self, st):
		res = st.get_var(self.value)
		Assembly.write_program([f"MOV EBX, [{self.value}_{res[1]}]"])
		return res[0]
Exemplo n.º 4
0
	def eval(self, st):
		res = st.set_var(self.value, self.children[0].eval(st))
		Assembly.write_program([f"MOV [{self.value}_{res}], EBX"])
Exemplo n.º 5
0
    def eval(self, st):
        ass_mode = True
        if not ass_mode:
            if self.children[0].eval(st) == True:
                self.children[1].eval(st)

            else:
                if len(self.children) > 2:
                    self.children[2].eval(st)
        else:
            if len(self.children) > 2:
                self.children[0].eval(st)
                Assembly.write_program([f"CMP EBX, False"])
                Assembly.write_program([f"JE ELSE_{self.identifier}"])
                self.children[1].eval(st)
                Assembly.write_program([f"JMP EXIT_{self.identifier}"])
                Assembly.write_program([f"ELSE_{self.identifier}:"])
                self.children[2].eval(st)
                Assembly.write_program([f"EXIT_{self.identifier}:"])
            else:
                self.children[0].eval(st)
                Assembly.write_program([f"CMP EBX, False"])
                Assembly.write_program([f"JE EXIT_{self.identifier}"])
                self.children[1].eval(st)
                Assembly.write_program([f"EXIT_{self.identifier}:"])
Exemplo n.º 6
0
 def eval(self, st):
     Assembly.write_program([f"MOV EBX, {self.value}"])
     return self.value