Exemplo n.º 1
0
    def generate_relopexp_rel_code(self, p, q1, q2, q3):
        temp_terminal = LogicTerminal()
        if p[3].code:
            temp_terminal.address = p[3].address
        else:
            temp_terminal.address = q1
        temp_terminal.code = p[3].code
        temp_terminal.code += q1 + ": if (" + p[1].right_most_exp.get_value(
        ) + ' ' + p[2] + ' ' + p[3].get_value() + ") goto -;\n"
        temp_terminal.code += q2 + ": goto -;\n"
        temp_terminal.true_list = [q1]
        temp_terminal.false_list = [q2]

        p[0] = LogicTerminal()
        p[0].address = p[1].address
        if temp_terminal.address:
            q3 = temp_terminal.address
        p[1].true_list_back_patch(q3)
        if temp_terminal.address:
            p[0].code = p[1].code + temp_terminal.code
        else:
            p[0].code = p[1].code + q3 + ': ' + temp_terminal.code
        p[0].false_list = p[1]
        p[0].false_list = p[1].false_list + temp_terminal.false_list
        p[0].true_list = temp_terminal.true_list
        p[0].right_most_exp = p[3]
Exemplo n.º 2
0
 def generate_relopexp_code(self, p, q1, q2):
     p[0] = LogicTerminal()
     if p[1].code:
         p[0].address = p[1].address
     elif p[3].code:
         p[0].address = p[3].address
     else:
         p[0].address = q1
     p[0].code += p[1].code + p[3].code
     p[0].code += q1 + ": if (" + p[1].get_value(
     ) + ' ' + p[2] + ' ' + p[3].get_value() + ") goto -;\n"
     p[0].code += q2 + ": goto -;\n"
     p[0].true_list = [q1]
     p[0].false_list = [q2]
     p[0].right_most_exp = p[3]