添加exp的52表达式
This commit is contained in:
parent
96eb3372fa
commit
22eb205cdf
@ -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)
|
||||
|
||||
|
@ -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'),
|
||||
|
Loading…
Reference in New Issue
Block a user