Esempio n. 1
0
#-*- coding: utf-8 -*-
import os
import re
import sys
import auto_get_root
import ReadFile
import Control_flow_flattern
file_path=auto_get_root.file_path
function_name=auto_get_root.function_name
root_path=auto_get_root.root_path
file_path_next=ReadFile.delete_note_in_numberFile(file_path) #生成无注释文件

#将选择到function部分作为空格,等待输入,并且回传出修复好程序
def blank_sol_function(file_path_next,function_name):
    function_list=[]
    function_match=list()
    mystr_list=list()
    aim_str = list()
    i=1
    with open(file_path_next) as file_object:
        lines = file_object.readlines()
        for line in lines[:]:
            mystr=line
            mystr_list.append(line.strip())
            pattern = re.compile('(?<=function)[^}]*?(?=\()')  # 正则表达式匹配行号数字以及需要匹配的关键词
            if(re.search(pattern,mystr)):
                function_list.append(i)
                function_match.append(re.search(pattern,mystr).group().strip())
            if(re.search('}',mystr)):
                signal_num=i;
            i = i + 1
Esempio n. 2
0
    for i in range(0, len(start_num_list)):
        str_text = ReadFile.read_need_partical_File(file_path,
                                                    start_num_list[i] - 1,
                                                    end_num_list[i])
        #print(str_text)
        temp_str_front = str_text.split('{')  #获取了IF (xxx)
        #print(temp_str_front[0])     #这个是条件语句
        #获取内部的子集成分
        temp_str_delete_signal = re.sub('\{', '', str_text, 1)
        #print(temp_str_delete_signal)  #这个是删除了函数条件的  {
        temp_str_blcok_pre = re.sub('\{(?<=\{)[^}]*?(?=\})\}', ';',
                                    temp_str_delete_signal)  #获取{}中的函数块
        #print(temp_str_blcok_pre)          #这个包含了函数的条件
        temp_str_blcok_pre_pre = re.search(
            '(?<=\))[^}]*?(?=\})|(?<=else)[^}]*?(?=\})',
            temp_str_blcok_pre).group()
        temp_str.append(temp_str_blcok_pre_pre)
    return (temp_str)  #这个是最终的得到结果,字符串形式的函数块集合


ReadFile.delete_note_in_numberFile(test_url)

if_num_list, signal_num_list = ReadFile.re_get_num(test_url)
start_num_list, end_num_list = ReadFile.match_sequence_total_number(
    if_num_list, signal_num_list)

str_text_partical = basic_block(test_url, start_num_list, end_num_list)
str_text = total_basic_block(test_url, start_num_list)
modify_start_list(start_num_list, end_num_list)
control_flow_order(str_text, str_text_partical)