CN113391817A - 基于antlr4的头文件替换方法及装置 - Google Patents
基于antlr4的头文件替换方法及装置 Download PDFInfo
- Publication number
- CN113391817A CN113391817A CN202110665389.1A CN202110665389A CN113391817A CN 113391817 A CN113391817 A CN 113391817A CN 202110665389 A CN202110665389 A CN 202110665389A CN 113391817 A CN113391817 A CN 113391817A
- Authority
- CN
- China
- Prior art keywords
- file
- header file
- information
- original
- header
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于ANTLR4的头文件替换方法及装置。所述基于ANTLR4的头文件替换方法包括:获取目标语言的头文件映射数据结构,所述目标语言的头文件映射数据结构包括目标头文件信息及原有头文件信息;获取待替换文件,其包括头文件以及内容文件;在内容文件进行源代码解析转换过程中,获取待替换文件的头文件信息;将待替换文件的头文件信息与原有头文件信息进行匹配从而获取匹配到的原有头文件信息并将匹配到的原有头文件信息作为替换头文件信息;将各个替换头文件信息插入至内容文件转换后的待替换文件中的头文件中。本申请的基于ANTLR4的头文件能够实现头文件快速准确的匹配与插入,提高代码转换的效率。
Description
技术领域
本申请涉及ANTLR4语法解析技术领域,具体涉及一种基于ANTLR4的头文件替换方法以及基于ANTLR4的头文件替换装置。
背景技术
为了能更加方便、直观的对一个工程进行翻译操作,一般需要将工程源代码的语言表现形式转变成目标语言表现形式,而ANTLR4就把此过程变的更加简单。
ANTLR4是目前比较流行的一种解析器生成器,具有自己规定的语法规则,一般情况下,用户可根据语法规则编写.g4文件,ANTLR4读取.g4内容后,可以解析.g4文件描述的文件格式,并生成解析树。
ANTLR4解析过程主要分为两步,首先是为该语言生成一个词法分析器lexer,lexer是将输入的文本转化为词法符号的程序,然后是根据词法符号以识别语句结构生成语法分析树(parsetree)也叫句法树(syntax)的数据结构,该数据结构记录了语法分析器识别出输入语句结构的过程,以及该结构的组成部分。用户可通过遍历语法树的所有节点,然后根据目标语言的结构、业务逻辑,重构替换生成一棵新的语法树,并输出出来,这样就完成了一种语言到另一种语言的翻译。
现有技术中,目前普遍采用人工的方式识别要替换的头文件,即当语言翻译结束后,人工查找源代码文件中翻译目标语言所对应的头文件,并将查找到的头文件插入到对应的源代码文件中。当工程源代码文件较多时,这种人工查找替换头文件的方式耗时耗力,降低了代码转换的效率。
发明内容
本发明的目的在于提供一种基于ANTLR4的头文件替换方法,来克服或至少减轻现有技术的至少一个上述缺陷。
本发明的一个方面,提供一种基于ANTLR4的头文件替换方法,所述基于ANTLR4的头文件自动识别与替换方法包括:
获取目标语言的头文件映射数据结构,所述目标语言的头文件映射数据结构包括至少一个目标头文件信息以及至少一个原有头文件信息,一个原有头文件信息映射一个目标头文件信息;
获取待替换文件,所述待替换文件包括头文件以及内容文件;
在待替换文件的内容文件进行源代码解析转换过程中,获取待替换文件的头文件信息;
将每个待替换文件的头文件信息分别与目标语言的头文件映射数据结构中的每个原有头文件信息进行匹配从而获取匹配到的原有头文件信息并将所述匹配到的原有头文件信息作为替换头文件信息;
将各个替换头文件信息插入至所述内容文件转换后的待替换文件中的头文件中。
可选地,所述基于ANTLR4的头文件替换方法进一步包括:
获取原有语言的头文件映射数据结构,所述原有语言的头文件映射数据结构包括至少一个原有头文件信息;
将内容文件转换后的待替换文件中的每个头文件信息分别与原有语言的头文件映射数据结构中的原有头文件信息进行匹配从而获取匹配到的原有头文件信息;
判断每个匹配到的原有头文件信息是否需要保留,若否,则
删除内容文件转换后的待替换文件中的匹配到的原有头文件。
可选地,所述基于ANTLR4的头文件替换方法进一步包括:
判断每个匹配到的原有头文件信息是否需要保留,若是,则
保留内容文件转换后的待替换文件中的匹配到的原有头文件。
可选地,所述获取目标语言的头文件映射数据结构包括:
获取目标语言的标准文件;
根据目标语言的标准文件获取目标语言的头文件映射数据结构。
可选地,所述根据目标语言的标准文件获取目标语言的头文件映射数据结构包括:
通过ANTLR4的抽象语法树机制,将目标语言的标准文件解析为抽象语法树,在抽象语法树中的节点分别对应目标语言的标准文件的代码片段,包括目标语言的标准文件的头文件名称,类,变量,函数等信息;
对目标语言的标准文件形成的抽象语法树进行遍历,获取目标语言的标准文件信息,并将目标语言的标准文件信息写入已经定义好的头文件数据结构中从而形成目标语言的头文件映射数据结构。
可选地,所述获取原有语言的头文件映射数据结构包括:
获取原有语言的标准文件;
根据原有语言的标准文件获取原有语言的头文件映射数据结构。
可选地,所述根据原有语言的标准文件获取原有语言的头文件映射数据结构包括:
通过ANTLR4的抽象语法树机制,将原有语言的标准文件解析为抽象语法树,在抽象语法树中的节点分别对应原有语言的标准文件的代码片段,包括原有语言的标准文件的头文件名称,类,变量,函数等信息;
对原有语言的标准文件形成的抽象语法树进行遍历,获取原有语言的标准文件信息,并将原有语言的标准文件信息写入已经定义好的头文件数据结构中从而形成原有语言的头文件映射数据结构。
可选地,所述目标头文件信息包括目标头文件名称信息,目标类信息,目标变量信息,目标函数信息;
所述原有头文件信息包括原有头文件名称信息,原有类信息,原有变量信息,原有函数信息。
本申请还提供了一种基于ANTLR4的头文件替换装置,所述基于ANTLR4的头文件替换装置包括:
目标语言的头文件映射数据结构获取模块,所述目标语言的头文件映射数据结构获取模块用于获取目标语言的头文件映射数据结构,所述目标语言的头文件映射数据结构包括至少一个目标头文件信息以及至少一个原有头文件信息,一个原有头文件信息映射一个目标头文件信息;
待替换文件获取模块,所述待替换文件获取模块用于获取待替换文件,所述待替换文件包括头文件以及内容文件;
待替换文件的头文件信息获取模块,所述待替换文件的头文件信息获取模块用于在待替换文件的内容文件进行源代码解析转换过程中,获取待替换文件的头文件信息;
第一匹配模块,所述第一匹配模块用于将每个待替换文件的头文件信息分别与目标语言的头文件映射数据结构中的每个原有头文件信息进行匹配从而获取匹配到的原有头文件信息并将所述匹配到的原有头文件信息作为替换头文件信息;
替换模块,所述替换模块用于将各个替换头文件信息插入至所述内容文件转换后的待替换文件中的头文件中。
可选地,所述基于ANTLR4的头文件替换装置进一步包括:
原有语言的头文件映射数据结构获取模块,所述原有语言的头文件映射数据结构获取模块用于获取原有语言的头文件映射数据结构,所述原有语言的头文件映射数据结构包括至少一个原有头文件信息;
第二匹配模块,所述第二匹配模块用于将内容文件转换后的待替换文件中的每个头文件信息分别与原有语言的头文件映射数据结构中的原有头文件信息进行匹配从而获取匹配到的原有头文件信息;
判断模块,所述判断模块用于判断每个匹配到的原有头文件信息是否需要保留;
删除模块,所述删除模块用于在所述判断模块判断为否时,删除内容文件转换后的待替换文件中的匹配到的原有头文件。
有益效果
本申请的基于ANTLR4的头文件替换方法基于ANTLR4的语法解析功能,在源代码解析与转换过程中,实现头文件快速准确的匹配与插入,提高代码转换的效率。
附图说明
图1为本发明第一实施例的基于ANTLR4的头文件替换方法的流程示意图。
图2是一种电子设备,用于实现图1所示的基于ANTLR4的头文件替换方法。
具体实施方式
为使本申请实施的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本申请一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本申请的实施例进行详细说明。
在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请保护范围的限制。
图1为本发明第一实施例的基于ANTLR4的头文件替换方法的流程示意图。
如图1所示的基于ANTLR4的头文件自动识别与替换方法包括:
步骤1:获取目标语言的头文件映射数据结构,目标语言的头文件映射数据结构包括至少一个目标头文件信息以及至少一个原有头文件信息,一个原有头文件信息映射一个目标头文件信息;
步骤2:获取待替换文件,待替换文件包括头文件以及内容文件;
步骤3:在待替换文件的内容文件进行源代码解析转换过程中,获取待替换文件的头文件信息;
步骤4:将每个待替换文件的头文件信息分别与目标语言的头文件映射数据结构中的每个原有头文件信息进行匹配从而获取匹配到的原有头文件信息并将匹配到的原有头文件信息作为替换头文件信息;
步骤5:将各个替换头文件信息插入至内容文件转换后的待替换文件中的头文件中。
ANTLR4是一个强大的跨语言语法解析器,可以用来读取、处理、执行或翻译结构化文本或二进制文件,被广泛用来构建语言,工具和框架。ANTLR4使用.g4语法文件来描述解析规则,通过解析形成抽象语法树,抽象语法树是源代码结构的一种抽象表示,它以树的形状表示语言的语法结构。实现ANTLR4的listener接口,可以遍历整个抽象语法树,并根据目标语言的语法规则进行源代码的重构,实现源代码的语法自动识别和目标语言转换,在目标语言的转换过程中,需要在源代码文件中进行对应头文件的替换。本申请提出一种基于ANTLR4的源代码头文件自动识别与替换方法,提升了代码转换的效率。
在本实施例中,为了实现代码的移植和平台API的移植,一种语言到另一种语言的翻译变的越来越重要,为了提升语言翻译的效率,本发明采用一种基于ANTLR4的源代码头文件自动识别与替换方法,通过ANTLR4抽象语法树机制,自动识别源代码中的原有头文件,并根据源码翻译的前后对比,搜索匹配目标映射头文件,实现目标映射头文件和原有头文件的替换,以提升代码转换的效率。
本申请主要是基于ANTLR4的语法解析功能,在源代码解析与转换过程中,实现头文件快速准确的匹配与插入,提高代码转换的效率。ANTLR4是一个强大的跨语言语法解析器,可用于读取、处理、执行和翻译结构化的文本或二进制文件,ANTLR4进行识别的第一步是将词法分析阶段将负责将符号(token)分组成符号类(token class ortoken type),然后是解析阶段,根据词法,构建出一棵分析树(parse tree),进而用户遍历parseTree的所有节点并进行重构转化,生成新的语法树进而实现翻译,为加快对特定工程的解析速度,本文发明了一种基于ANTLR4的源代码头文件自动识别与替换方法,自动识别源代码中引用到的头文件,并进行插入和替换,实现了头文件快速准确的匹配与插入,提高代码转换效率,具有重要意义。
在本实施例中,基于ANTLR4的头文件替换方法进一步包括:
获取原有语言的头文件映射数据结构,所述原有语言的头文件映射数据结构包括至少一个原有头文件信息;
将内容文件转换后的待替换文件中的每个头文件信息分别与原有语言的头文件映射数据结构中的原有头文件信息进行匹配从而获取匹配到的原有头文件信息;
判断每个匹配到的原有头文件信息是否需要保留,若否,则
删除内容文件转换后的待替换文件中的匹配到的原有头文件。
在本实施例中,所述基于ANTLR4的头文件替换方法进一步包括:
判断每个匹配到的原有头文件信息是否需要保留,若是,则
保留内容文件转换后的待替换文件中的匹配到的原有头文件。
在本实施例中,所述获取目标语言的头文件映射数据结构包括:
获取目标语言的标准文件;
根据目标语言的标准文件获取目标语言的头文件映射数据结构。
在本实施例中,所述根据目标语言的标准文件获取目标语言的头文件映射数据结构包括:
通过ANTLR4的抽象语法树机制,将目标语言的标准文件解析为抽象语法树,在抽象语法树中的节点分别对应目标语言的标准文件的代码片段,包括目标语言的标准文件的头文件名称,类,变量,函数等信息;
对目标语言的标准文件形成的抽象语法树进行遍历,获取目标语言的标准文件信息,并将目标语言的标准文件信息写入已经定义好的头文件数据结构中从而形成目标语言的头文件映射数据结构。
在本实施例中,所述获取原有语言的头文件映射数据结构包括:
获取原有语言的标准文件;
根据原有语言的标准文件获取原有语言的头文件映射数据结构。
在本实施例中,所述根据原有语言的标准文件获取原有语言的头文件映射数据结构包括:
通过ANTLR4的抽象语法树机制,将原有语言的标准文件解析为抽象语法树,在抽象语法树中的节点分别对应原有语言的标准文件的代码片段,包括原有语言的标准文件的头文件名称,类,变量,函数等信息;
对原有语言的标准文件形成的抽象语法树进行遍历,获取原有语言的标准文件信息,并将原有语言的标准文件信息写入已经定义好的头文件数据结构中从而形成原有语言的头文件映射数据结构。
在本实施例中,目标头文件信息包括目标头文件名称信息,目标类信息,目标变量信息,目标函数信息;
所述原有头文件信息包括原有头文件名称信息,原有类信息,原有变量信息,原有函数信息。
本申请还提供了一种基于ANTLR4的头文件替换装置,所述基于ANTLR4的头文件替换装置包括目标语言的头文件映射数据结构获取模块、待替换文件获取模块、待替换文件的头文件信息获取模块、第一匹配模块以及替换模块,其中,
目标语言的头文件映射数据结构获取模块用于获取目标语言的头文件映射数据结构,目标语言的头文件映射数据结构包括至少一个目标头文件信息以及至少一个原有头文件信息,一个原有头文件信息映射一个目标头文件信息;
待替换文件获取模块用于获取待替换文件,所述待替换文件包括头文件以及内容文件;
待替换文件的头文件信息获取模块用于在待替换文件的内容文件进行源代码解析转换过程中,获取待替换文件的头文件信息;
第一匹配模块用于将每个待替换文件的头文件信息分别与目标语言的头文件映射数据结构中的每个原有头文件信息进行匹配从而获取匹配到的原有头文件信息并将所述匹配到的原有头文件信息作为替换头文件信息;
替换模块用于将各个替换头文件信息插入至所述内容文件转换后的待替换文件中的头文件中。
在本实施例中,基于ANTLR4的头文件替换装置进一步包括原有语言的头文件映射数据结构获取模块、第二匹配模块、判断模块以及删除模块,其中,
原有语言的头文件映射数据结构获取模块用于获取原有语言的头文件映射数据结构,所述原有语言的头文件映射数据结构包括至少一个原有头文件信息;
第二匹配模块用于将内容文件转换后的待替换文件中的每个头文件信息分别与原有语言的头文件映射数据结构中的原有头文件信息进行匹配从而获取匹配到的原有头文件信息;
判断模块用于判断每个匹配到的原有头文件信息是否需要保留;
删除模块用于在判断模块判断为否时,删除内容文件转换后的待替换文件中的匹配到的原有头文件。
在本实施例中,通过ANTLR4的抽象语法树机制,将目标语言的标准文件解析为抽象语法树具体为:通过ANTLR4的抽象语法树机制,将工程中的每个源码文件解析为抽象语法树,在抽象语法树中的节点分别对应源码文件的代码片段,这其中包括现有源码文件的头文件,类,变量,函数等信息。
在本实施例中,对目标语言的标准文件形成的抽象语法树进行遍历,获取目标语言的标准文件信息具体为:实现ANTLR4的listener接口,可以对抽象语法树进行遍历,在此过程中,获取目标语言的标准文件信息。
本申请还提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并能够在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的基于ANTLR4的头文件替换方法。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时能够实现如上所述的基于ANTLR4的头文件替换方法。
图2是能够实现根据本申请一个实施例提供的基于ANTLR4的头文件替换方法的电子设备的示例性结构图。
如图2所示,电子设备包括输入设备501、输入接口502、中央处理器503、存储器504、输出接口505以及输出设备506。其中,输入接口502、中央处理器503、存储器504以及输出接口505通过总线507相互连接,输入设备501和输出设备506分别通过输入接口502和输出接口505与总线507连接,进而与电子设备的其他组件连接。具体地,输入设备504接收来自外部的输入信息,并通过输入接口502将输入信息传送到中央处理器503;中央处理器503基于存储器504中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器504中,然后通过输出接口505将输出信息传送到输出设备506;输出设备506将输出信息输出到电子设备的外部供用户使用。
也就是说,图2所示的电子设备也可以被实现为包括:存储有计算机可执行指令的存储器;以及一个或多个处理器,该一个或多个处理器在执行计算机可执行指令时可以实现结合图1描述的基于ANTLR4的头文件替换方法。
在一个实施例中,图2所示的电子设备可以被实现为包括:存储器504,被配置为存储可执行程序代码;一个或多个处理器503,被配置为运行存储器504中存储的可执行程序代码,以执行上述实施例中的基于ANTLR4的头文件替换方法。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动,媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数据多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
此外,显然“包括”一词不排除其他单元或步骤。装置权利要求中陈述的多个单元、模块或装置也可以由一个单元或总装置通过软件或硬件来实现。第一、第二等词语用来标识名称,而不标识任何特定的顺序。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,模块、程序段、或代码的一部分包括一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地标识的方框实际上可以基本并行地执行,他们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或总流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本实施例中所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现装置/终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在本实施例中,装置/终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
最后需要指出的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于ANTLR4的头文件替换方法,其特征在于,所述基于ANTLR4的头文件自动识别与替换方法包括:
获取目标语言的头文件映射数据结构,所述目标语言的头文件映射数据结构包括至少一个目标头文件信息以及至少一个原有头文件信息,一个原有头文件信息映射一个目标头文件信息;
获取待替换文件,所述待替换文件包括头文件以及内容文件;
在待替换文件的内容文件进行源代码解析转换过程中,获取待替换文件的头文件信息;
将每个待替换文件的头文件信息分别与目标语言的头文件映射数据结构中的每个原有头文件信息进行匹配从而获取匹配到的原有头文件信息并将所述匹配到的原有头文件信息作为替换头文件信息;
将各个替换头文件信息插入至所述内容文件转换后的待替换文件中的头文件中。
2.如权利要求1所述的基于ANTLR4的头文件替换方法,其特征在于,所述基于ANTLR4的头文件替换方法进一步包括:
获取原有语言的头文件映射数据结构,所述原有语言的头文件映射数据结构包括至少一个原有头文件信息;
将内容文件转换后的待替换文件中的每个头文件信息分别与原有语言的头文件映射数据结构中的原有头文件信息进行匹配从而获取匹配到的原有头文件信息;
判断每个匹配到的原有头文件信息是否需要保留,若否,则
删除内容文件转换后的待替换文件中的匹配到的原有头文件。
3.如权利要求2所述的基于ANTLR4的头文件替换方法,其特征在于,所述基于ANTLR4的头文件替换方法进一步包括:
判断每个匹配到的原有头文件信息是否需要保留,若是,则
保留内容文件转换后的待替换文件中的匹配到的原有头文件。
4.如权利要求1所述的基于ANTLR4的头文件替换方法,其特征在于,所述获取目标语言的头文件映射数据结构包括:
获取目标语言的标准文件;
根据目标语言的标准文件获取目标语言的头文件映射数据结构。
5.如权利要求4所述的基于ANTLR4的头文件替换方法,其特征在于,所述根据目标语言的标准文件获取目标语言的头文件映射数据结构包括:
通过ANTLR4的抽象语法树机制,将目标语言的标准文件解析为抽象语法树,在抽象语法树中的节点分别对应目标语言的标准文件的代码片段,包括目标语言的标准文件的头文件名称,类,变量,函数等信息;
对目标语言的标准文件形成的抽象语法树进行遍历,获取目标语言的标准文件信息,并将目标语言的标准文件信息写入已经定义好的头文件数据结构中从而形成目标语言的头文件映射数据结构。
6.如权利要求2所述的基于ANTLR4的头文件替换方法,其特征在于,所述获取原有语言的头文件映射数据结构包括:
获取原有语言的标准文件;
根据原有语言的标准文件获取原有语言的头文件映射数据结构。
7.如权利要求6所述的基于ANTLR4的头文件替换方法,其特征在于,所述根据原有语言的标准文件获取原有语言的头文件映射数据结构包括:
通过ANTLR4的抽象语法树机制,将原有语言的标准文件解析为抽象语法树,在抽象语法树中的节点分别对应原有语言的标准文件的代码片段,包括原有语言的标准文件的头文件名称,类,变量,函数等信息;
对原有语言的标准文件形成的抽象语法树进行遍历,获取原有语言的标准文件信息,并将原有语言的标准文件信息写入已经定义好的头文件数据结构中从而形成原有语言的头文件映射数据结构。
8.如权利要求1至7中任意一项所述的基于ANTLR4的头文件替换方法,其特征在于,所述目标头文件信息包括目标头文件名称信息,目标类信息,目标变量信息,目标函数信息;
所述原有头文件信息包括原有头文件名称信息,原有类信息,原有变量信息,原有函数信息。
9.一种基于ANTLR4的头文件替换装置,其特征在于,所述基于ANTLR4的头文件替换装置包括:
目标语言的头文件映射数据结构获取模块,所述目标语言的头文件映射数据结构获取模块用于获取目标语言的头文件映射数据结构,所述目标语言的头文件映射数据结构包括至少一个目标头文件信息以及至少一个原有头文件信息,一个原有头文件信息映射一个目标头文件信息;
待替换文件获取模块,所述待替换文件获取模块用于获取待替换文件,所述待替换文件包括头文件以及内容文件;
待替换文件的头文件信息获取模块,所述待替换文件的头文件信息获取模块用于在待替换文件的内容文件进行源代码解析转换过程中,获取待替换文件的头文件信息;
第一匹配模块,所述第一匹配模块用于将每个待替换文件的头文件信息分别与目标语言的头文件映射数据结构中的每个原有头文件信息进行匹配从而获取匹配到的原有头文件信息并将所述匹配到的原有头文件信息作为替换头文件信息;
替换模块,所述替换模块用于将各个替换头文件信息插入至所述内容文件转换后的待替换文件中的头文件中。
10.如权利要求9所述的基于ANTLR4的头文件替换装置,其特征在于,所述基于ANTLR4的头文件替换装置进一步包括:
原有语言的头文件映射数据结构获取模块,所述原有语言的头文件映射数据结构获取模块用于获取原有语言的头文件映射数据结构,所述原有语言的头文件映射数据结构包括至少一个原有头文件信息;
第二匹配模块,所述第二匹配模块用于将内容文件转换后的待替换文件中的每个头文件信息分别与原有语言的头文件映射数据结构中的原有头文件信息进行匹配从而获取匹配到的原有头文件信息;
判断模块,所述判断模块用于判断每个匹配到的原有头文件信息是否需要保留;
删除模块,所述删除模块用于在所述判断模块判断为否时,删除内容文件转换后的待替换文件中的匹配到的原有头文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110665389.1A CN113391817B (zh) | 2021-06-16 | 2021-06-16 | 基于antlr4的头文件替换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110665389.1A CN113391817B (zh) | 2021-06-16 | 2021-06-16 | 基于antlr4的头文件替换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113391817A true CN113391817A (zh) | 2021-09-14 |
CN113391817B CN113391817B (zh) | 2022-08-26 |
Family
ID=77621369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110665389.1A Active CN113391817B (zh) | 2021-06-16 | 2021-06-16 | 基于antlr4的头文件替换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391817B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546480A (zh) * | 2022-04-26 | 2022-05-27 | 天津所托瑞安汽车科技有限公司 | 代码自动集成方法、设备和可读存储介质 |
CN114610385A (zh) * | 2022-03-16 | 2022-06-10 | 山东福生佳信科技股份有限公司 | 一种运行环境适配系统及方法 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05197560A (ja) * | 1992-01-20 | 1993-08-06 | Toshiba Corp | プログラミング言語変換装置 |
US20020023261A1 (en) * | 1999-07-08 | 2002-02-21 | Goodwin Richard Glenn | Automatically generated objects within extensible object frameworks and links to enterprise resources |
US20040194072A1 (en) * | 2003-03-25 | 2004-09-30 | Venter Barend H. | Multi-language compilation |
CN1860437A (zh) * | 2003-04-16 | 2006-11-08 | 皇家飞利浦电子股份有限公司 | 可编译计算机程序的处理 |
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
US20130104112A1 (en) * | 2011-10-24 | 2013-04-25 | Google Inc. | Pre-Parsed Headers for Compilation |
EP2650785A1 (en) * | 2012-04-10 | 2013-10-16 | Siemens Aktiengesellschaft | Method, system, and computer program product for transforming machine code to source code |
CN104156314A (zh) * | 2014-08-14 | 2014-11-19 | 北京航空航天大学 | 一种应用于测试系统的代码重用方法 |
CN104317589A (zh) * | 2014-10-22 | 2015-01-28 | 中国电子科技集团公司第四十一研究所 | 一种用于加载动态链接库的代码自动生成方法及装置 |
CN105404584A (zh) * | 2015-11-25 | 2016-03-16 | 广州博冠信息科技有限公司 | Lpc静态代码检查方法、装置和系统 |
CN108153529A (zh) * | 2017-12-22 | 2018-06-12 | 杭州迪普科技股份有限公司 | 一种文件编译的方法及装置 |
CN110413283A (zh) * | 2019-08-02 | 2019-11-05 | 北京智游网安科技有限公司 | 基于编译器前端的混淆方法、存储介质及终端设备 |
CN110737466A (zh) * | 2019-10-16 | 2020-01-31 | 南京航空航天大学 | 基于静态程序分析的源代码编码序列表示方法 |
CN111475168A (zh) * | 2020-04-14 | 2020-07-31 | 中国人民解放军战略支援部队信息工程大学 | 一种代码编译方法及装置 |
CN111949249A (zh) * | 2019-05-14 | 2020-11-17 | 百度(美国)有限责任公司 | 用于基于Protobuf的项目的通用验证方法 |
CN112445492A (zh) * | 2020-12-02 | 2021-03-05 | 青岛海洋科学与技术国家实验室发展中心 | 一种基于antlr4的源码翻译方法 |
CN112463628A (zh) * | 2020-12-11 | 2021-03-09 | 北京航空航天大学 | 一种基于模型基框架的自主无人系统软件自适应演化方法 |
-
2021
- 2021-06-16 CN CN202110665389.1A patent/CN113391817B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05197560A (ja) * | 1992-01-20 | 1993-08-06 | Toshiba Corp | プログラミング言語変換装置 |
US20020023261A1 (en) * | 1999-07-08 | 2002-02-21 | Goodwin Richard Glenn | Automatically generated objects within extensible object frameworks and links to enterprise resources |
US20040194072A1 (en) * | 2003-03-25 | 2004-09-30 | Venter Barend H. | Multi-language compilation |
CN1860437A (zh) * | 2003-04-16 | 2006-11-08 | 皇家飞利浦电子股份有限公司 | 可编译计算机程序的处理 |
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
US20130104112A1 (en) * | 2011-10-24 | 2013-04-25 | Google Inc. | Pre-Parsed Headers for Compilation |
EP2650785A1 (en) * | 2012-04-10 | 2013-10-16 | Siemens Aktiengesellschaft | Method, system, and computer program product for transforming machine code to source code |
CN104156314A (zh) * | 2014-08-14 | 2014-11-19 | 北京航空航天大学 | 一种应用于测试系统的代码重用方法 |
CN104317589A (zh) * | 2014-10-22 | 2015-01-28 | 中国电子科技集团公司第四十一研究所 | 一种用于加载动态链接库的代码自动生成方法及装置 |
CN105404584A (zh) * | 2015-11-25 | 2016-03-16 | 广州博冠信息科技有限公司 | Lpc静态代码检查方法、装置和系统 |
CN108153529A (zh) * | 2017-12-22 | 2018-06-12 | 杭州迪普科技股份有限公司 | 一种文件编译的方法及装置 |
CN111949249A (zh) * | 2019-05-14 | 2020-11-17 | 百度(美国)有限责任公司 | 用于基于Protobuf的项目的通用验证方法 |
CN110413283A (zh) * | 2019-08-02 | 2019-11-05 | 北京智游网安科技有限公司 | 基于编译器前端的混淆方法、存储介质及终端设备 |
CN110737466A (zh) * | 2019-10-16 | 2020-01-31 | 南京航空航天大学 | 基于静态程序分析的源代码编码序列表示方法 |
CN111475168A (zh) * | 2020-04-14 | 2020-07-31 | 中国人民解放军战略支援部队信息工程大学 | 一种代码编译方法及装置 |
CN112445492A (zh) * | 2020-12-02 | 2021-03-05 | 青岛海洋科学与技术国家实验室发展中心 | 一种基于antlr4的源码翻译方法 |
CN112463628A (zh) * | 2020-12-11 | 2021-03-09 | 北京航空航天大学 | 一种基于模型基框架的自主无人系统软件自适应演化方法 |
Non-Patent Citations (1)
Title |
---|
雷宇等: "一种C代码软件设计信息提取方法研究", 《南通大学学报(自然科学版)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114610385A (zh) * | 2022-03-16 | 2022-06-10 | 山东福生佳信科技股份有限公司 | 一种运行环境适配系统及方法 |
CN114610385B (zh) * | 2022-03-16 | 2023-05-09 | 山东福生佳信科技股份有限公司 | 一种运行环境适配系统及方法 |
CN114546480A (zh) * | 2022-04-26 | 2022-05-27 | 天津所托瑞安汽车科技有限公司 | 代码自动集成方法、设备和可读存储介质 |
CN114546480B (zh) * | 2022-04-26 | 2022-08-19 | 天津所托瑞安汽车科技有限公司 | 代码自动集成方法、设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113391817B (zh) | 2022-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
CN113032362B (zh) | 数据血缘分析方法、装置、电子设备和存储介质 | |
CN113391817B (zh) | 基于antlr4的头文件替换方法及装置 | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
CN109558525B (zh) | 一种测试数据集的生成方法、装置、设备和存储介质 | |
CN113051285B (zh) | Sql语句的转换方法、系统、设备及存储介质 | |
US20090106744A1 (en) | Compiling and translating method and apparatus | |
CN108334609B (zh) | Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质 | |
CN111176650B (zh) | 解析器生成方法、检索方法、服务器及存储介质 | |
CN115509514B (zh) | 一种前端数据模拟方法、装置、设备及介质 | |
CN107566090B (zh) | 一种定长/变长的文本报文处理方法及装置 | |
CN109063091B (zh) | 混合编码的数据迁移方法、数据迁移装置和存储介质 | |
CN111079408A (zh) | 一种语种识别方法、装置、设备及存储介质 | |
US20220358297A1 (en) | Method for human-machine dialogue, computing device and computer-readable storage medium | |
CN111488155A (zh) | 着色语言翻译方法 | |
CN112416365A (zh) | 文件转换方法、装置及存储介质 | |
CN114780100B (zh) | 编译方法、电子设备及存储介质 | |
CN116089663A (zh) | 一种规则表达式匹配方法、装置及计算机可读存储介质 | |
CN111124541A (zh) | 一种配置文件的生成方法、装置、设备及介质 | |
CN117975934A (zh) | 音频文本对的获取方法和装置、电子设备、存储介质 | |
CN111443979B (zh) | 文档处理方法、装置、计算机设备及存储介质 | |
CN116775599A (zh) | 数据迁移方法、装置、电子设备、存储介质 | |
CN111158665A (zh) | 代码生成方法及装置、电子设备和存储介质 | |
CN110569243A (zh) | 一种数据查询方法、数据查询插件和数据查询服务器 | |
CN113467828B (zh) | 一种异构众核处理器中编程语言转换方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |