Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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"]")])
Ejemplo n.º 3
0
	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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
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)