def __rule(self, node): if symbol_table_pool.query(node.fun).exist(node.id): if node.children[0].type == 'var': node.name = node.id if node.children[0].type == 'array': node.name = get_temp_var_name() for c in node.children[0].code: node.code.append(c) node.code.append(node.name + ' := ' + node.id + '[' + node.children[0].name + ']') else: self.errors.append('变量' + node.id + '未定义')
def __rule(self, node): if node.children[1].mul: node.name = 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) node.code.append(node.name + ' := ' + node.children[0].name + ' ' + node.children[1].op + ' ' + node.children[1].name) else: node.name = node.children[0].name for c in node.children[0].code: node.code.append(c)
def __rule(self, node): if symbol_table_pool.fun_table.exist(node.id): if node.children[1].num != symbol_table_pool.query( node.id).get_params_num(): self.errors.append('调用函数' + node.id + '的时候参数数量不匹配') else: for c in node.children[1].code: node.code.append(c) node.code.append( 'call ' + node.id + ', ' + str(symbol_table_pool.query(node.fun).get_params_num())) node.name = get_temp_var_name() node.code.append(node.name + ' := ' + 'result') else: self.errors.append('函数' + node.id + '未定义')
def __rule(self, node): node.name = get_temp_var_name() node.code.append(node.name + ' := ' + node.children[0].lexical)