我有一个简单的python程序,用于对C源代码进行操作。所以我从.c文件中的#include中提取头文件并存储它们,从.h文件中获取函数声明并存储它们,并从函数中获取变量。
问题是,如何将这些嵌套到一个类中并保持链接? 即.c文件包含.h文件列表,.h文件包含函数声明列表,函数声明包含变量列表。
到目前为止,我所拥有的只是:
var arrString = ""[{\"8872\" : \"Yes\",\"9900\" : \"Bob\",\"2222\" : \"Sagat\"}]"
var arr = JsonConvert.DeserializeObject(arrString);
foreach (var attendee in (IEnumerable) attendeeArray)
{
var theResponseOfQuestion9900 = attendee.9900
}
我不确定字典是否会更好?或者我甚至需要上课? (这是我的第一个python程序,我以前在C中工作)
答案 0 :(得分:0)
将所有内容都设为对象,每个对象充当其子对象的容器。实例化一个类时,它负责解析其对象以查找其子类。
因此,您创建了一个C_File,它迭代文件的内容并创建H_File对象。当您创建H_File时,它会迭代其内容并创建Funcs。当您创建Func时,它会迭代其内容以创建Vars。等等。
例如:
class C_File(object):
def __init__(self, filename):
self.headers = []
for header in self._get_headers(filename):
self.headers.append(H_File(header))
class H_File(object):
def __init__(self, header):
self.funcs = []
for func in self._get_funcs(header):
self.funcs.append(Func(func))
class Func(object):
def __init__(self, func):
self.vars = []
for var in self._get_vars(func):
self.vars.append(Var(var))
然后,您的主程序只需循环遍历文件名列表,创建C_Files:
def main():
c_files = []
for file in os.path.listdir(sys.argv[1]):
c_files.append(C_File(file))
在创建每个对象时,它会启动一系列事件,找到所有子项,孙子项等。