预编译中模拟宏控的实现方法及装置制造方法

文档序号:6493981阅读:157来源:国知局
预编译中模拟宏控的实现方法及装置制造方法
【专利摘要】本发明揭示了一种预编译中模拟宏控的实现方法及装置。该方法可包括:从待处理文件列表中提取待处理文件进行初步分析,并获取宏最大的嵌套深度;读取宏控制开关配置文件,并逐行处理所述提取的待处理文件的最顶层宏控后,将嵌套深度减一;判断所述嵌套深度是否大于零;当大于零时,返回上一步骤;否则,提取的待处理文件处理完毕。本发明的解释执行型语言中编译器在编译生成字节码之前,对代码本身进行类似于C语言等编译执行型语言中编译器的预编译处理,找到代码的合理宏控制分支,删除掉不必要的代码,达到精简代码,提高效率的目的。
【专利说明】预编译中模拟宏控的实现方法及装置
【技术领域】
[0001]本发明涉及到模拟宏控制的实现技术,特别是涉及到一种预编译中模拟宏控的实现方法及装置。
【背景技术】
[0002]计算机语言分高级语言和低级语言,在最底层执行时,计算机只识别二进制的指令序列。高级语言一般有两种执行方式:编译执行和解释执行,Java语言采用的执行方式是解释执行,执行时需先编译成字节码,然后通过解释器解释执行;其相对于编译执行,执行效率比较低。另外Java由于设计时就不兼容其他类似于C等语言采用的预编译处理,对于多个项目共用代码的情况,代码兼容往往采取定义静态变量的方式,解释执行时需判断具体针对哪种情况运行,降低了执行效率,而且还提高了代码的维护难度。

【发明内容】

[0003]本发明的主要目的为提供一种预编译中模拟宏控的实现方法,可提升代码执行效率以及降低代码的维护难度。
[0004]本发明提出一种预编译中模拟宏控的实现方法,包括:
[0005]从待处理文件列表中提取待处理文件进行初步分析,并获取宏最大的嵌套深度;
[0006]读取宏控制开关配置文件,并逐行处理所述提取的待处理文件的最顶层宏控后,将嵌套深度减一;
[0007]判断所述嵌套深度是否大于零;当大于零时,返回上一步骤;否则,提取的待处理文件处理完毕。
[0008]优选地,所述对提取的待处理文件处理完毕的步骤之后还包括:
[0009]判断所述待处理文件列表中是否还有待处理文件未进行处理;当有未进行处理时,提取待处理文件完成处理步骤;否则,结束。
[0010]优选地,所述读取宏控制开关配置文件的步骤之前还包括:
[0011]备份提取的待处理文件。
[0012]优选地,所述方法之前还包括:
[0013]读取已配置的待处理文件列表。
[0014]本发明还提出一种预编译中模拟宏控的实现装置,包括:
[0015]分析获取模块,用于从待处理文件列表中提取待处理文件进行初步分析,并获取宏最大的嵌套深度;
[0016]宏控处理模块,用于读取宏控制开关配置文件,并逐行处理所述提取的待处理文件的最顶层宏控后,将嵌套深度减一;
[0017]嵌套判断模块,用于判断所述嵌套深度是否大于零;在大于零时,通过宏控处理模块继续进行宏控处理;在等于零时,终止对提取的待处理文件处理。
[0018]优选地,所述实现装置还包括:[0019]文件判断模块,用于判断所述待处理文件列表中是否还有待处理文件未进行处理;在有未进行处理时,提取待处理文件完成处理步骤;在没有时,终止处理。
[0020]优选地,所述实现装置还包括:
[0021]文件备份模块,用于备份提取的待处理文件。
[0022]优选地,所述实现装置还包括:
[0023]列表读取模块,用于读取已配置的待处理文件列表。
[0024]本发明的模拟宏控的实现可符合C语言程序员宏控习惯,控制清晰;通过逐行处理找到代码的合理宏控制分支,删除掉不必要的代码,避免编译时代码冗余;还可去掉不必要的条件判断语句,提高执行效率;针对某些XML等文件因为配置上的少许差异不得不采用拷贝后修改,编译时覆盖的方式处理等问题,使用此种方式即可避免,从而避免文件拷贝冗余。
【专利附图】

【附图说明】
[0025]图1是本发明预编译中模拟宏控的实现方法一实施例的步骤流程示意图;
[0026]图2是本发明预编译中模拟宏控的实现方法另一实施例的步骤流程示意图;
[0027]图3是本发明预编译中模拟宏控的实现方法另一实施例的另一步骤流程示意图;
[0028]图4是本发明预编译中模拟宏控的实现方法又一实施例的步骤流程示意图;
[0029]图5是本发明预编译中模拟宏控的实现方法一实施例的结构示意图;
[0030]图6是本发明预编译中模拟宏控的实现方法另一实施例的结构示意图;
[0031]图7是本发明预编译中模拟宏控的实现方法另一实施例的另一结构示意图;
[0032]图8是本发明预编译中模拟宏控的实现方法又一实施例的结构示意图。
[0033]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
【具体实施方式】
[0034]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0035]参照图1,本发明提出一种预编译中模拟宏控的实现方法一实施例。该方法可包括:
[0036]步骤S11、从待处理文件列表中提取待处理文件进行初步分析,并获取宏最大的嵌套深度后,将嵌套深度减一;
[0037]步骤S12、读取宏控制开关配置文件,并逐行处理所述提取的待处理文件的最顶层宏控;
[0038]步骤S13、判断所述嵌套深度是否大于零;当大于零时,返回上一步骤;否则,提取的待处理文件处理完毕。
[0039]本实施例中解释执行型语言中编译器在编译生成字节码之前,对代码本身进行类似于C语言等编译执行型语言中编译器的预编译处理,找到代码的合理宏控制分支,删除掉不必要的代码,达到精简代码,提高效率的目的。
[0040]参照图2,在本发明另一实施例中,上述步骤Sll之前还可包括:
[0041]步骤S10、读取已配置的待处理文件列表。
[0042]首先,需读取已配置的包含若干待处理文件的待处理文件列表。并从该待处理文件列表中每次提取单个待处理文件进行初步词法分析,获取该单个待处理文件最大的嵌套深度(Max_Leve I)。
[0043]参照图3,上述步骤S12之前还可包括:
[0044]步骤S120、备份提取的待处理文件。
[0045]在获取Max_LeVel后,即可备份该提取的单个待处理文件,以备后续再使用。
[0046]在备份后,再读取宏控制开关配置文件,并逐行处理上述单个待处理文件最顶层的宏控(Top_LeVel)。在每次处理完最顶层的宏控后,可将最大的嵌套深度减一,即处理后的Max_Level=处理前的Max_Level_l,然后可判断上述处理后的Max_Level是否大于零;如果大于零,则可说明上述单个待处理文件的宏控未处理完成,需继续返回上述步骤S12,处理上述单个待处理文件的最顶层的宏控;否则,即可确定该单个待处理文件已经处理完毕,可结束对该单个待处理文件的处理。
[0047]参照图4,在确定上述单个待处理文件处理完毕之后上述实现方法还可包括:
[0048]步骤S14、判断所述待处理文件列表中是否还有待处理文件未进行处理;当有未进行处理时,返回步骤Sll ;否则,结束。
[0049]在处理完上述单个待处理文件后,可继续判断上述待处理文件列表中是否还有未进行处理的待处理文件,即可再次提取单个待处理文件,重复上述步骤Sll至S13,处理完成该再次提取的单个待处理文件。然后,再判断该待处理文件列表中是否还有未进行处理的待处理文件,如此循环,直至待处理文件列表中所有未进行处理的待处理文件处理完成。
[0050]上述预编译中模拟宏控的实现方法,可应用于Java及XML (ExtensibleMarkupLanguage,可扩展标记语言)等文件,其模拟宏控的实现可符合C语言程序员宏控习惯,控制清晰;通过逐行处理找到代码的合理宏控制分支,删除掉不必要的代码,避免编译时代码冗余;还可去掉不必要的条件判断语句,提高执行效率;针对某些XML等文件因为配置上的少许差异不得不采用拷贝后修改,编译时覆盖的方式处理,使用此种方式即可避免,从而避免文件拷贝冗余。
[0051]参照图5,本发明一种预编译中模拟宏控的实现装置20 —实施例。该实现装置20可包括:分析获取模块21、宏控处理模块22以及嵌套判断模块23 ;该分析获取模块21,用于从待处理文件列表中提取待处理文件进行初步分析,并获取宏最大的嵌套深度;该宏控处理模块22,用于读取宏控制开关配置文件,并逐行处理所述提取的待处理文件的最顶层宏控后,将嵌套深度减一;该嵌套判断模块23,用于判断所述嵌套深度是否大于零;在大于零时,通过宏控处理模块22继续进行宏控处理;在等于零时,终止对提取的待处理文件处理。
[0052]本实施例中解释执行型语言中编译器在编译生成字节码之前,对代码本身进行类似于C语言等编译执行型语言中编译器的预编译处理,找到代码的合理宏控制分支,删除掉不必要的代码,达到精简代码,提高效率的目的。
[0053]参照图6,在本发明另一实施例中,上述实现装置20还可包括:列表读取模块210,用于读取已配置的待处理文件列表。
[0054]首先,需通过列表读取模块210读取已配置的包含若干待处理文件的待处理文件列表。并利用分析获取模块21从该待处理文件列表中每次提取单个待处理文件进行初步词法分析,获取该单个待处理文件最大的嵌套深度(Max_Level)。[0055]参照图7,上述实现装置20还可包括:文件备份模块220,用于备份提取的待处理文件。
[0056]在获取Max_LeVel后,即可通过文件备份模块220备份该提取的单个待处理文件,以备后续再使用。
[0057]在备份后,再利用宏控处理模块22读取宏控制开关配置文件,并逐行处理上述单个待处理文件最顶层的宏控(Top_Level)。在每次处理完最顶层的宏控后,可将最大的嵌套深度减一,即处理后的MaX_LeVel=处理前的MaX_LeVel-l,然后可使用嵌套判断模块23判断上述处理后的MaX_LeVel是否大于零;如果大于零,则可说明上述单个待处理文件的宏控未处理完成,需继续通过宏控处理模块22继续进行宏控处理,处理上述单个待处理文件的最顶层的宏控;否则(在等于零),即可确定该单个待处理文件已经处理完毕,可结束对该单个待处理文件的处理。
[0058]参照图8,在本发明又一实施例中,上述实现装置20还可包括:文件判断模块24,用于判断所述待处理文件列表中是否还有待处理文件未进行处理;在有未进行处理时,提取待处理文件完成处理步骤;在没有时,终止处理。
[0059]在处理完上述单个待处理文件后,可继续通过文件判断模块24判断上述待处理文件列表中是否还有未进行处理的待处理文件,即可再次提取单个待处理文件,重复上述步骤Sll至S13,处理完成该再次提取的单个待处理文件。然后,再判断该待处理文件列表中是否还有未进行处理的待处理文件,如此循环,直至待处理文件列表中所有未进行处理的待处理文件处理完成。
[0060]上述预编译中模拟宏控的实现装置20,可应用于Java及XML (ExtensibleMarkupLanguage,可扩展标记语言)等文件,其模拟宏控的实现可符合C语言程序员宏控习惯,控制清晰;通过逐行处理找到代码的合理宏控制分支,删除掉不必要的代码,避免编译时代码冗余;还可去掉不必要的条件判断语句,提高执行效率;针对某些XML等文件因为配置上的少许差异不得不采用拷贝后修改,编译时覆盖的方式处理,使用此种方式中即可避免,从而避免文件拷贝几余。
[0061]以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种预编译中模拟宏控的实现方法,其特征在于,包括: 从待处理文件列表中提取待处理文件进行初步分析,并获取宏最大的嵌套深度; 读取宏控制开关配置文件,并逐行处理所述提取的待处理文件的最顶层宏控后,将嵌套深度减一; 判断所述嵌套深度是否大于零;当大于零时,返回上一步骤;否则,提取的待处理文件处理完毕。
2.根据权利要求1所述的预编译中模拟宏控的实现方法,其特征在于,所述对提取的待处理文件处理完毕的步骤之后还包括: 判断所述待处理文件列表中是否还有待处理文件未进行处理;当有未进行处理时,提取待处理文件完成处理步骤;否则,结束。
3.根据权利要求1或2所述的预编译中模拟宏控的实现方法,其特征在于,所述读取宏控制开关配置文件的步骤之前还包括: 备份提取的待处理文件。
4.根据权利要求1或2所述的预编译中模拟宏控的实现方法,其特征在于,所述方法之前还包括: 读取已配置的待处理文件列表。
5.一种预编译中模拟宏控的实现装置,其特征在于,包括: 分析获取模块,用于从待处理文件列表中提取待处理文件进行初步分析,并获取宏最大的嵌套深度; 宏控处理模块,用于读取宏控制开关配置文件,并逐行处理所述提取的待处理文件的最顶层宏控后,将嵌套深度减一; 嵌套判断模块,用于判断所述嵌套深度是否大于零;在大于零时,通过宏控处理模块继续进行宏控处理;在等于零时,终止对提取的待处理文件处理。
6.根据权利要求5所述的预编译中模拟宏控的实现装置,其特征在于,所述实现装置还包括: 文件判断模块,用于判断所述待处理文件列表中是否还有待处理文件未进行处理;在有未进行处理时,提取待处理文件完成处理步骤;在没有时,终止处理。
7.根据权利要求5或6所述的预编译中模拟宏控的实现装置,其特征在于,所述实现装置还包括: 文件备份模块,用于备份提取的待处理文件。
8.根据权利要求5或6所述的预编译中模拟宏控的实现装置,其特征在于,所述实现装置还包括: 列表读取模块,用于读取已配置的待处理文件列表。
【文档编号】G06F9/45GK103902346SQ201210580474
【公开日】2014年7月2日 申请日期:2012年12月27日 优先权日:2012年12月27日
【发明者】刘宏良 申请人:上海鼎为电子科技(集团)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1