添加exp的52表达式

This commit is contained in:
Gary Gan 2025-06-11 21:10:49 +08:00
parent 96eb3372fa
commit 22eb205cdf
2 changed files with 37 additions and 1 deletions

View File

@ -931,5 +931,41 @@ class LocalDefineFollow31E(SemanticRule):
symbol_table_pool.global_var_table.append(
GlobalVar(node.id, node.type, 4 * int(node.length))
)
class Exp52C0(SemanticRule):
def execute(self):
self.__rule(self.node)
def __rule(self, node):
self.fun = node.parent.fun
class Exp52C1(SemanticRule):
def execute(self):
self.__rule(self.node)
def __rule(self, node):
self.fun = node.parent.fun
class Exp52E(SemanticRule):
def execute(self):
self.__rule(self.node)
def __rule(self, node):
node.bool = node.children[1].bool
if node.children[1].bool:
node.name_1 = get_temp_var_name()
node.name_2 = get_temp_var_name()
for c in node.children[0].code:
node.code.append(c)
for c in node.children[1].code:
node.code.append(c)
# (op, i1, i2, o1)
node.code.append("(" + node.children[1].op + " ,", + node.children[0].name + " ," + node.children[1].name + " ," + node.name_1 + ")")
# (=. i1, _, o1)
node.code.append("(=, " + node.name_1 + ", _," + node.name_2 + ")")
else:
node.name = node.children[0].name
for c in node.children[0].code:
node.code.append(c)

View File

@ -555,7 +555,7 @@ productions = [
# ),
# 52
Production('exp', ['additive-expr', 'exp-follow'],
None, ['exp0C0', 'exp0C1'], 'exp0E'),
None, ['Exp52C0', 'Exp52C1'], 'Exp52E'),
# # 53
# Production('exp-follow', ['rel-op', 'additive-expr'],
# None, [None, 'expFollow0C1'], 'expFollow0E'),