def transform(self, node, results): args = [] item_id = 0 while item_id < len(node.children): if (node.children[item_id].__class__.__name__ == "Leaf"): if node.children[item_id].value == ':': #加花括号 args += [ Leaf(token.LBRACE, '{'), node.children[item_id + 1].clone(), Leaf(token.RBRACE, '}'), Leaf(4, '\r\n') ] item_id += 1 #if,elif处理 elif (node.children[item_id].value == 'elif') | (node.children[item_id].value == 'if'): if node.children[item_id].value == 'elif': leaf_temp = Leaf(1, 'if') leaf_temp.prefix = " " args += [Leaf(1, 'else'), leaf_temp] else: args += [node.children[item_id].clone()] args += [Leaf(7, '(')] args += [node.children[item_id + 1].clone()] args += [Leaf(8, ')')] item_id += 1 else: args += [node.children[item_id].clone()] else: print("\nFixerError_if\n") item_id += 1 new = Node(node.type, args) new.prefix = node.prefix return new
def _get_list(self, *nodes): """A List node, filled""" lbrace = Leaf(token.LBRACE, u"[") lbrace.prefix = u" " if len(nodes) > 0: nodes[0].prefix = u"" return Node(self.syms.trailer, [lbrace] + [node.clone() for node in nodes] + [Leaf(token.RBRACE, u"]")])
def transform(self, node, results): args = [] item_id = 0 while item_id <len(node.children): if (node.children[item_id].__class__.__name__=="Leaf"): if node.children[item_id].value==':': #取:号下一行的第二个元素前的空行,因为第一个元素是换行。 leaf_temp0 = Leaf(token.RBRACE, '}') leaf_temp0.prefix = change_indent(calculate_indent(node.children[item_id+1].children[1].value), -1) #加花括号 args+=[Leaf(token.LBRACE, '{'), node.children[item_id+1].clone(), Leaf(4, '\r\n'), leaf_temp0, Leaf(4, '\r\n')] item_id+=1 #if,elif处理 elif (node.children[item_id].value=='elif') | (node.children[item_id].value=='if'): if node.children[item_id].value=='elif': leaf_temp0 = Leaf(1, 'else') leaf_temp0.prefix = change_indent(calculate_indent(node.children[item_id+3].children[1].value), -1) leaf_temp1 = Leaf(1, 'if') leaf_temp1.prefix = " " args+=[leaf_temp0,leaf_temp1] else: args+=[node.children[item_id].clone()] args+=[Leaf(7, '(')] args+=[node.children[item_id+1].clone()] args+=[Leaf(8, ')')] item_id+=1 else: leaf_temp0 = node.children[item_id].clone() if(node.children[item_id].value=='else'): leaf_temp0.prefix = change_indent(calculate_indent(node.children[item_id+2].children[1].value), -1) args+=[leaf_temp0] else: print("\nFixerError_if\n") item_id+=1 new = Node(node.type,args) new.prefix = node.prefix return new
def transform(self, node, results): if (type(results["content"]) == type(node)): args = [results["content"].clone()] else: args = [n.clone() for n in results["content"]] for temp_leaf in args: if temp_leaf.type == syms.suite: indent_leaf = Leaf(token.RBRACE, '}') indent_leaf.prefix = calculate_indent(node.prefix) temp_leaf.insert_child( len(temp_leaf.children) - 1, indent_leaf) temp_leaf.insert_child( len(temp_leaf.children) - 1, Leaf(4, '\r\n')) args = [n.clone() for n in results["head"]] + [Leaf(token.LBRACE, '{')] + args new = Node(node.type, args) new.prefix = node.prefix return new
def add_include(node, file_name): #文件头注释 temp = False if (node.children[0].type==syms.simple_stmt) \ and (node.children[0].children[0].type==3): temp = node.children[0].clone() node.children[0].remove() #insert insert_node = Leaf(1, '<' + file_name + '>') insert_node.prefix = ' ' insert_node = Node(syms.import_name, [\ Leaf(1, '#include'),\ insert_node,\ Leaf(4, '\r\n')]) node.insert_child(0, insert_node) #node.children[0].prefix = node.children[1].prefix #node.children[1].prefix = "" if temp: node.insert_child(0, temp)