CN111475150A - 一种跨语言绑定方法、装置、设备及存储介质 - Google Patents
一种跨语言绑定方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111475150A CN111475150A CN202010264081.1A CN202010264081A CN111475150A CN 111475150 A CN111475150 A CN 111475150A CN 202010264081 A CN202010264081 A CN 202010264081A CN 111475150 A CN111475150 A CN 111475150A
- Authority
- CN
- China
- Prior art keywords
- file
- annotation
- code
- binding
- language
- 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
- 238000000034 method Methods 0.000 title claims description 54
- 238000013507 mapping Methods 0.000 claims abstract description 16
- 238000000605 extraction Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 abstract description 29
- 238000011161 development Methods 0.000 abstract description 8
- 239000002609 medium Substances 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种跨语言绑定方法、装置、设备及存储介质。本申请实施例提供的技术方案通过在编写原始代码时,基于预设注释格式对原始代码进行注释,之后根据原始代码注释中的关键字确定注释类型,并基于对应的注释类型将注释信息转换成IDL文件,并基于IDL文件生成目标语言的绑定代码,实现目标代码到原始代码的映射,基于该绑定代码即可获取原始组件在目标语言上使用对应功能的能力,无需开发者手动编写绑定代码,根据编写原始代码时输入的注释即可自动生成目标语言的绑定代码,提高项目开发效率。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种跨语言绑定方法、装置、设备及存储介质。
背景技术
对于主流的编程语言框架,尽管可以完全用一种语言编写出应用程序,但还是存在单独用该语言无法满足应用程序的情况,例如标准库没有提供应用程序所需要的功能,尤其这些功能是平台相关的,只能用其他语言编写。
为了解决上述问题,编程语言框架通常会提供一套API(ApplicationProgramming Interface,应用程序接口),比如Java的JNI(JavaNative Interface,Java本地接口),Node.js的N-API等。开发者可以按照这套API的规则编写绑定代码,将另一种语言上实现的功能注册到目标语言上,以获取在其应用层使用这些功能的能力。
但是,编写绑定代码需要时间,接口越复杂,需要的时间越长,编写绑定代码需要耗费开发者大量的时间,导致项目开发效率降低。
发明内容
本申请实施例提供一种跨语言绑定方法、装置、设备及存储介质,以自动生成目标语言的绑定代码,提高项目开发效率。
在第一方面,本申请实施例提供了一种跨语言绑定方法,包括:
遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息;
基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件;
基于所述IDL文件生成目标语言的绑定代码,所述绑定代码用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
进一步的,所述基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件,包括:
基于所述关键字确定注释类型,并根据所述注释类型解析所述注释信息;
根据解析后的所述注释信息生成IDL对象,并基于所述IDL对象生成IDL文件。
进一步的,所述基于所述IDL文件生成目标语言的绑定代码,包括:
读取IDL文件,获取IDL文件中的IDL对象;
遍历所述IDL对象,确定所述IDL对象的对象类型;
根据所述对象类型将所述IDL对象注册到目标语言中,得到与对象类型对应的绑定代码。
进一步的,所述基于所述IDL文件生成目标语言的绑定代码之后,还包括:
基于所述绑定代码生成目标语言组件和/或应用程序。
进一步的,所述基于所述绑定代码生成目标语言组件和/或可执行程序,包括
将所述绑定代码和原始组件结合并编译生成目标语言组件;和/或
将所述绑定代码、原始组件以及应用程序代码结合并编译生成可执行程序。
进一步的,所述基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件之后,还包括:
基于所述IDL文件生成API文档。
进一步的,所述基于所述IDL文件生成API文档,包括:
读取IDL文件,获取IDL文件中的IDL对象;
利用文档生成工具将所述IDL对象转换成API文档。
在第二方面,本申请实施例提供了一种跨语言绑定装置,包括注释抽取模块、IDL文件生成模块和绑定代码生成模块,其中:
注释抽取模块,用于遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息;
IDL文件生成模块,用于基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件;
绑定代码生成模块,用于基于所述IDL文件生成目标语言的绑定代码,所述绑定代码用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
进一步的,所述IDL文件生成模块具体用于:基于所述关键字确定注释类型,并根据所述注释类型解析所述注释信息;根据解析后的所述注释信息生成IDL对象,并基于所述IDL对象生成IDL文件。
进一步的,所述绑定代码生成模块具体用于:读取IDL文件,获取IDL文件中的IDL对象;遍历所述IDL对象,确定所述IDL对象的对象类型;根据所述对象类型将所述IDL对象注册到目标语言中,得到与对象类型对应的绑定代码。
进一步的,所述装置还包括组件生成模块,用于基于所述绑定代码生成目标语言组件。
进一步的,所述组件生成模块具体用于将所述绑定代码和原始组件结合并编译生成目标语言组件。
进一步的,所述装置还包括程序生成模块,用于基于所述绑定代码生成可执行程序。
进一步的,所述程序生成模块具体用于将所述绑定代码、原始组件以及应用程序代码结合并编译生成可执行程序。
进一步的,所述装置还包括API文档生成模块,用于基于所述IDL文件生成API文档。
进一步的,所述API文档生成模块具体用于读取IDL文件,获取IDL文件中的IDL对象;利用文档生成工具将所述IDL对象转换成API文档。
在第三方面,本申请实施例提供了一种计算机设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的跨语言绑定方法。
在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的跨语言绑定方法。
本申请实施例通过在编写原始代码时,基于预设注释格式对原始代码进行注释,之后根据原始代码注释中的关键字确定注释类型,并基于对应的注释类型将注释信息转换成IDL文件,并基于IDL文件生成目标语言的绑定代码,实现目标代码到原始代码的映射,基于该绑定代码即可获取原始组件在目标语言上使用对应功能的能力,无需开发者手动编写绑定代码,根据编写原始代码时输入的注释即可自动生成目标语言的绑定代码,提高项目开发效率。
附图说明
图1是本申请实施例提供的一种跨语言绑定方法的流程图;
图2是本申请实施例提供的另一种跨语言绑定方法的流程图;
图3是本申请实施例提供的生成IDL对象的流程示意图;
图4是本申请实施例提供的生成绑定代码及目标语言组件的生成流程图;
图5是本申请实施例提供的一种跨语言绑定装置的示意图;
图6是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1给出了本申请实施例提供的一种跨语言绑定方法的流程图,本申请实施例提供的跨语言绑定方法可以由跨语言绑定装置来执行,该跨语言绑定装置可以通过硬件和/或软件的方式实现,并集成在计算机设备中。
下述以跨语言绑定装置执行跨语言绑定方法为例进行描述。参考图1,该跨语言绑定方法包括:
S101:遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息。
其中,在编写原始代码时,根据预设注释格式对原始代码和原始组件接口进行注释,注释的内容包括关键字和注释信息。例如,原始代码中的“类”、“属性”“成员函数”、“枚举”等相关的注释内容,对应的注释中的关键字则为指示注释类型为“类”、“属性”“成员函数”、“枚举”等的相关内容,后面的注释信息则为对代码内容的具体注释内容。例如,在JavaScript中注释内容为:“//类:注释内容”,则其中“类”或者是“类:”可以作为关键字。
可选的,在对原始代码进行注释时,使用自描述的注释格式进行注释,以提高代码的可读性。
示例性的,在需要将原始组件对应于目标语言的绑定代码时,读取原始组件对应的原始代码,通过注释提取工具抽取出原始代码中的注释,并遍历原始代码中的注释,提取出每一个注释中的关键字和注释信息。
S102:基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件。
示例性的,在提取出注释中的关键字和注释信息后,根据关键字判断注释信息的注释类型。
例如,假设注释内容为“//返回值:注释内容”,对应提取出的关键字和注释信息分别为“返回值”和“注释内容”,根据关键字“返回值”可判断对应原始代码用于标识函数的返回值,则注释类型为“返回值”。
进一步的,在确定注释的注释类型后,根据注释类型将注释内容转换成IDL对象。其中IDL对象记录有注释内容中描述的类、属性、成员函数、枚举、常量等。在生成IDL对象后,进一步的,将所有注释对应的IDL对象统一保存在一个或多个IDL文件中,并对IDL文件进行储存。
可以理解的是,由于IDL(Interface Description Language,接口描述语言)是用来描述软件组件接口的一种计算机语言,以一种中立的方式描述接口,使得在不同平台上运行的对象或用不同语言编写的程序可以相互通信。那么基于IDL文件跨平台通信的特性,可将IDL文件转换为其他目标语言的绑定代码。
S103:基于所述IDL文件生成目标语言的绑定代码,所述绑定代码用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
示例性的,在需要跨语言使用原始组件或原始代码的功能时,读取对应的IDL文件,获取IDL文件中的IDL对象,并按照对象类型将IDL对象注册到目标语言,从而将各IDL对象转换为在目标语言的绑定代码。
通过绑定代码将原始组件的功能和接口注入到目标语言中,这样在目标语言的应用层就可以按类似原始语言上使用原始组件的方式使用原始组件,使得绑定代码可用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
上述,通过在编写原始代码时,基于预设注释格式对原始代码进行注释,之后根据原始代码注释中的关键字确定注释类型,并基于对应的注释类型将注释信息转换成IDL文件,并基于IDL文件生成目标语言的绑定代码,实现目标代码到原始代码的映射,基于该绑定代码即可获取原始组件在目标语言上使用对应功能的能力,无需开发者手动编写绑定代码,根据编写原始代码时输入的注释即可自动生成目标语言的绑定代码,提高项目开发效率。
图2为本申请实施例提供的另一种跨语言绑定方法的流程图,该跨语言绑定方法是对上述跨语言绑定方法的具体化。参考图2,该跨语言绑定方法包括:
S201:遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息。
S202:基于所述关键字确定注释类型,并根据所述注释类型解析所述注释信息。
具体的,在抽取出注释中的关键字和注释信息后,根据关键字判断每个注释的注释类型,例如,假设注释内容为“/*常量:注释内容*/”,对应提取出的关键字和注释信息分别为“常量”和“注释内容”,根据关键字“常量”可判断对应原始代码为整型值、字符串等常量,则注释类型为“常量”。
进一步的,根据注释类型对注释信息进行解析,即过滤掉注释信息中不必要的信息,并转换成方便后续处理的数据结构(具体数据结构类型本方案不做限定,可根据实际需要选择现有数据结构)。
S203:根据解析后的所述注释信息生成IDL对象,并基于所述IDL对象生成IDL文件。
具体的,在完成注释信息的解析后,根据注释类型将注释内容转换成对应类型的IDL对象,并对IDL对象的对象类型进行记录,其中对象类型与注释类型相对应。例如,对于关键字为“常量”的注释,新建一个“常量”的IDL对象,用于记录对应的注释内容,并在IDL对象中将对象类型记录为“常量”。对象类型的记录方式可以是在IDL对象中设置type字段来进行声明,在读取IDL对象后可根据该type字段即可判断IDL对象的对象类型。
进一步的,在得到IDL对象后,将IDL对象保存到一个或多个IDL文件中。
图3为本申请实施例提供的生成IDL对象的流程示意图,如图3所示,先读取头文件或注释文件(原始组件或原始代码),获取注释后,检索注释中的关键字,再根据关键字判断注释类型,并根据判定的注释类型,以对应类型的解析方式解析注释内容。例如,先判断是否为“类”,若是,则按照“类”的解析方式对该注释内容进行解析,以过滤无用信息并转换成适用于IDL的数据结构,若注释类型不属于“类”,则进一步判断是否为“属性”,依次进行判断直至确定注释类型。进一步的,在完成注释内容的解析后,新建一个对应注释类型的IDL对象。
其中,将新建的“属性”和“成员函数”对应的IDL对象添加到最近的“类”对应的IDL文件或IDL对象,是由于这是面向对象的一种表述,类用于指定对象的形式,一般包含数据和处理数据的方法,也就是属性和成员函数,属性和成员函数一般称为类的成员。其余IDL对象的处理方式同理,例如枚举是一种数据类型,一般是一个常量集合,所以将新建的“常量”IDL对象添加到最近的“枚举”IDL文件或IDL对象中,其中常量就是不变化的数据,可以是整型值,也可以是字符串。
S204:读取IDL文件,获取IDL文件中的IDL对象,并遍历所述IDL对象,确定所述IDL对象的对象类型。
具体的,读取IDL文件,并获取IDL文件中的IDL对象,遍历获取到的IDL对象,并判断IDL对象的对象类型。其中对象类型的判断可根据IDL对象中的type字段进行判断,例如,IDL对象的type字段包含“类”,则该IDL对象对应的对象类型为“类”。
S205:根据所述对象类型将所述IDL对象注册到目标语言中,得到与对象类型对应的绑定代码。
其中,绑定代码用于实现目标代码到原始组件的映射,并提供用目标语言描述的接口,即将原始组件的功能和接口注入(注册)到目标语言中。其中,绑定代码的产生可通过目标语言对应的代码产生器进行。将原始组件的功能和接口注入到目标语言中是指除了使用目标语言进行描述,还需完成到原始组件的接口的映射。这样在目标语言的应用层就可以按类似原始语言上使用原始组件或原始代码的方式使用原始组件或原始代码的功能。
目标语言对应的应用层调用目标语言描述的接口时,实际会调用该接口实际映射到的原始组件的接口。绑定代码就是实现这个映射的逻辑,以及提供统一的用目标语言描述的接口。
具体的,在确定IDL对象的对象类型后,根据对象类型对IDL对象进行解析,获取其中记录的内容,并将该IDL对象注册到目标语言中,从而得到与对象类型对应的绑定代码。
其中,绑定代码的生成过程,就是将解析得到的IDL对象转换成目标语言的函数或常量等的注册代码的过程。注册可理解为使用目标语言框架提供的API,将外部函数或常量等注入到目标语言中。进一步的,在得到绑定代码后,将绑定代码保存到预先设定的存储位置中。
S206:基于所述绑定代码生成目标语言组件和/或应用程序。
具体的,对于目标语言组件的生成,具体为将所述绑定代码和原始组件的代码或库结合并编译生成目标语言组件。将原始组件的功能和接口注入到目标语言中,这样调用目标语言描述的接口时,实际会调用该接口实际映射到的原始组件的接口。
另外,对于目标语言应用程序的生成,具体为将所述绑定代码、原始组件的代码或库以及应用程序代码结合并编译生成可执行程序(例如EXE程序)。可以理解的是,可以将应用程序代码跟多个原始组件以及绑定代码得到一整套可执行程序。
其中,编译工作可通过目标语言提供的编译器进行。
图4是本申请实施例提供的生成绑定代码及目标语言组件的生成流程图,如图4所示,先读取IDL文件并获取其中的IDL对象,根据IDL对象中的type字段获取其中的关键字,并根据关键字判断IDL对象所属的对象分类。例如,先判断IDL对象是否为“类”对象分类,若是,则按照“类”对应的解析方式解析该IDL对象并获取IDL对象的内容,否则,进一步判断IDL对象是否为“枚举”对象分类,直至确定IDL对象的对象类型。
进一步的,在解析出IDL对象的内容后,将IDL对象注册到目标语言中,得到对应分类的绑定代码。进一步的,在得到绑定代码后,利用目标语言提供的编译器将绑定代码和原始组件的代码或库结合并编译生成目标语言组件(应用层封装)。
其中,绑定代码负责把软件组件的函数一一注册到目标语言的层面,而应用层封装负责把原始组件的函数包装成面向对象的接口,该接口内部指向原始组件的实际实现。
可以理解的是,其实只要有绑定代码,开发者就可以达到使用原组件功能的目的,目标语言组件的提供可提高代码的重用率,例如,JavaScript有很多种引擎,比如嵌入式系统常用的JerryScript和PC上常用的V8,不同的引擎提供注册能力的API不同,导致绑定代码不同,但应用层封装(目标语言组件)则只需生成一份即可在不同引擎中使用。另外,目标语言组件为应用层提供一个统一的接口,更换引擎不会对应用程序造成影响。
S207:基于所述IDL文件生成API文档。
本实施例提供的API文档的生成方法与绑定代码的生成过程类似,区别在于输出的文件格式不同。其中API文档的文件格式可以是Markdown、HTML文档等,基于IDL文件执行文档生成工具可生成对应的API文档。
示例性的,API文档的生成过程具体包括:读取IDL文件,获取IDL文件中的IDL对象;利用文档生成工具将所述IDL对象转换成API文档。
具体的,读取IDL文件,并获取IDL文件中的IDL对象,遍历获取到的IDL对象,并判断IDL对象的对象类型。进一步的,根据对象类型对IDL对象进行解析,获取其中记录的内容,并文档生成工具将所述IDL对象转换成API文档。进一步的,在得到API文档后,将API文档保存到预先设定的存储位置中。
可以理解的是,本实施例提供的注释、IDL文件、API文件等对格式没有限制,可根据需要替换为如INI、JSON等文件格式,并添加对该格式的解析即可。
上述,通过在编写原始代码时,基于预设注释格式对原始代码进行注释,之后根据原始代码注释中的关键字确定注释类型,并基于对应的注释类型将注释信息转换成IDL文件,并基于IDL文件生成目标语言的绑定代码,实现目标代码到原始代码的映射,基于该绑定代码即可获取原始组件在目标语言上使用对应功能的能力,无需开发者手动编写绑定代码,根据编写原始代码时输入的注释即可自动生成目标语言的绑定代码,提高项目开发效率。IDL文件作为中间层,实现对不同平台或不同语言的适应。同时,目标语言组件可提高代码的重用率,并为应用层提供一个统一的接口,减少更换引擎对应用程序造成的影响。并有效降低软件组件跨语言或跨平台应用的难度,缩短开发时间。开发者无须了解绑定细节,只要在编写代码时按照固定的规则写好注释,便可一键生成其他语言版本的绑定代码、组件、API文档;也无须担心后期版本迭代带来的同步问题,大大提高整体可维护性。
图5为本申请实施例提供的一种跨语言绑定装置的示意图。参考图5,该跨语言绑定装置包括注释抽取模块51、IDL文件生成模块52和绑定代码生成模块53。
其中,注释抽取模块51,用于遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息;IDL文件生成模块52,用于基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件;绑定代码生成模块53,用于基于所述IDL文件生成目标语言的绑定代码,所述绑定代码用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
上述,通过在编写原始代码时,基于预设注释格式对原始代码进行注释,之后根据原始代码注释中的关键字确定注释类型,并基于对应的注释类型将注释信息转换成IDL文件,并基于IDL文件生成目标语言的绑定代码,实现目标代码到原始代码的映射,基于该绑定代码即可获取原始组件在目标语言上使用对应功能的能力,无需开发者手动编写绑定代码,根据编写原始代码时输入的注释即可自动生成目标语言的绑定代码,提高项目开发效率。IDL文件作为中间层,实现对不同平台或不同语言的适应。
在一个实施例中,所述IDL文件生成模块52具体用于:基于所述关键字确定注释类型,并根据所述注释类型解析所述注释信息;根据解析后的所述注释信息生成IDL对象,并基于所述IDL对象生成IDL文件。
在一个实施例中,所述绑定代码生成模块53具体用于:读取IDL文件,获取IDL文件中的IDL对象;遍历所述IDL对象,确定所述IDL对象的对象类型;根据所述对象类型将所述IDL对象注册到目标语言中,得到与对象类型对应的绑定代码。
在一个实施例中,所述装置还包括组件生成模块,用于基于所述绑定代码生成目标语言组件。
在一个实施例中,所述组件生成模块具体用于将所述绑定代码和原始组件结合并编译生成目标语言组件。
在一个实施例中,所述装置还包括程序生成模块,用于基于所述绑定代码生成可执行程序。
在一个实施例中,所述程序生成模块具体用于将所述绑定代码、原始组件以及应用程序代码结合并编译生成可执行程序。
在一个实施例中,所述装置还包括API文档生成模块,用于基于所述IDL文件生成API文档。
在一个实施例中,所述API文档生成模块具体用于读取IDL文件,获取IDL文件中的IDL对象;利用文档生成工具将所述IDL对象转换成API文档。
本申请实施例还提供了一种计算机设备,该计算机设备可集成本申请实施例提供的跨语言绑定装置。图6是本申请实施例提供的一种计算机设备的结构示意图。参考图6,该计算机设备包括:输入装置63、输出装置64、存储器62以及一个或多个处理器61;所述存储器62,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器61执行,使得所述一个或多个处理器61实现如上述实施例提供的跨语言绑定方法。其中输入装置63、输出装置64、存储器62和处理器61可以通过总线或者其他方式连接,图6中以通过总线连接为例。
存储器62作为一种计算设备可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请任意实施例所述的跨语言绑定方法对应的程序指令/模块(例如,跨语言绑定装置中的注释抽取模块51、IDL文件生成模块52和绑定代码生成模块53)。存储器62可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器62可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器62可进一步包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置63可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置64可包括显示屏等显示设备。
处理器61通过运行存储在存储器62中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的跨语言绑定方法。
上述提供的跨语言绑定装置和计算机设备可用于执行上述实施例提供的跨语言绑定方法,具备相应的功能和有益效果。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的跨语言绑定方法,该跨语言绑定方法包括:遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息;基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件;基于所述IDL文件生成目标语言的绑定代码,所述绑定代码用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的跨语言绑定方法,还可以执行本申请任意实施例所提供的跨语言绑定方法中的相关操作。
上述实施例中提供的跨语言绑定装置、设备及存储介质可执行本申请任意实施例所提供的跨语言绑定方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的跨语言绑定方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。
Claims (10)
1.一种跨语言绑定方法,其特征在于,包括:
遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息;
基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件;
基于所述IDL文件生成目标语言的绑定代码,所述绑定代码用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
2.根据权利要求1所述的跨语言绑定方法,其特征在于,所述基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件,包括:
基于所述关键字确定注释类型,并根据所述注释类型解析所述注释信息;
根据解析后的所述注释信息生成IDL对象,并基于所述IDL对象生成IDL文件。
3.根据权利要求2所述的跨语言绑定方法,其特征在于,所述基于所述IDL文件生成目标语言的绑定代码,包括:
读取IDL文件,获取IDL文件中的IDL对象;
遍历所述IDL对象,确定所述IDL对象的对象类型;
根据所述对象类型将所述IDL对象注册到目标语言中,得到与对象类型对应的绑定代码。
4.根据权利要求1所述的跨语言绑定方法,其特征在于,所述基于所述IDL文件生成目标语言的绑定代码之后,还包括:
基于所述绑定代码生成目标语言组件和/或应用程序。
5.根据权利要求4所述的跨语言绑定方法,其特征在于,所述基于所述绑定代码生成目标语言组件和/或可执行程序,包括
将所述绑定代码和原始组件结合并编译生成目标语言组件;和/或
将所述绑定代码、原始组件以及应用程序代码结合并编译生成可执行程序。
6.根据权利要求1-5任一项所述的跨语言绑定方法,其特征在于,所述基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件之后,还包括:
基于所述IDL文件生成API文档。
7.根据权利要求6所述的跨语言绑定方法,其特征在于,所述基于所述IDL文件生成API文档,包括:
读取IDL文件,获取IDL文件中的IDL对象;
利用文档生成工具将所述IDL对象转换成API文档。
8.一种跨语言绑定装置,其特征在于,包括注释抽取模块、IDL文件生成模块和绑定代码生成模块,其中:
注释抽取模块,用于遍历原始代码中的注释,提取注释中的关键字以及注释信息,所述原始代码基于预设注释格式进行注释,注释格式包括关键字和注释信息;
IDL文件生成模块,用于基于所述关键字确定注释类型,并基于所述注释类型将所述注释信息转换成IDL文件;
绑定代码生成模块,用于基于所述IDL文件生成目标语言的绑定代码,所述绑定代码用于实现目标代码到原始代码的映射,并提供用目标语言描述的接口。
9.一种计算机设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7任一所述的跨语言绑定方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7任一所述的跨语言绑定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010264081.1A CN111475150B (zh) | 2020-04-07 | 2020-04-07 | 一种跨语言绑定方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010264081.1A CN111475150B (zh) | 2020-04-07 | 2020-04-07 | 一种跨语言绑定方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475150A true CN111475150A (zh) | 2020-07-31 |
CN111475150B CN111475150B (zh) | 2023-12-05 |
Family
ID=71749973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010264081.1A Active CN111475150B (zh) | 2020-04-07 | 2020-04-07 | 一种跨语言绑定方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475150B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764763A (zh) * | 2020-12-31 | 2021-05-07 | 亿企赢网络科技有限公司 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
CN113157261A (zh) * | 2021-03-31 | 2021-07-23 | 上海万物新生环保科技集团有限公司 | 一种代码生成方法及设备 |
CN114237614A (zh) * | 2021-12-14 | 2022-03-25 | 北京奇艺世纪科技有限公司 | 应用程序的处理方法、装置、电子设备和存储介质 |
CN115016794A (zh) * | 2022-06-01 | 2022-09-06 | 北京有竹居网络技术有限公司 | 代码生成方法、装置、设备及介质 |
CN115525260A (zh) * | 2022-10-08 | 2022-12-27 | 在线途游(北京)科技有限公司 | 一种基于protobuf的代码生成方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040201600A1 (en) * | 2001-12-14 | 2004-10-14 | Microsoft Corporation | Methods and system for providing an XML-based interface description language |
CN106919434A (zh) * | 2017-03-22 | 2017-07-04 | 恒生电子股份有限公司 | 一种代码生成方法及装置 |
CN107608889A (zh) * | 2017-09-15 | 2018-01-19 | 杭州销冠网络科技有限公司 | 一种测试脚本自动生成方法及系统 |
CN110210009A (zh) * | 2018-02-28 | 2019-09-06 | 中兴通讯股份有限公司 | 注释处理方法、装置及设备、计算机可读存储介质 |
CN110955416A (zh) * | 2019-10-12 | 2020-04-03 | 平安普惠企业管理有限公司 | 接口文档生成方法、装置、设备和计算机存储介质 |
-
2020
- 2020-04-07 CN CN202010264081.1A patent/CN111475150B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040201600A1 (en) * | 2001-12-14 | 2004-10-14 | Microsoft Corporation | Methods and system for providing an XML-based interface description language |
CN106919434A (zh) * | 2017-03-22 | 2017-07-04 | 恒生电子股份有限公司 | 一种代码生成方法及装置 |
CN107608889A (zh) * | 2017-09-15 | 2018-01-19 | 杭州销冠网络科技有限公司 | 一种测试脚本自动生成方法及系统 |
CN110210009A (zh) * | 2018-02-28 | 2019-09-06 | 中兴通讯股份有限公司 | 注释处理方法、装置及设备、计算机可读存储介质 |
CN110955416A (zh) * | 2019-10-12 | 2020-04-03 | 平安普惠企业管理有限公司 | 接口文档生成方法、装置、设备和计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
包婧: "JavaScript并行化性能提升的研究与实现", no. 6, pages 139 - 80 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764763A (zh) * | 2020-12-31 | 2021-05-07 | 亿企赢网络科技有限公司 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
CN112764763B (zh) * | 2020-12-31 | 2024-01-26 | 亿企赢网络科技有限公司 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
CN113157261A (zh) * | 2021-03-31 | 2021-07-23 | 上海万物新生环保科技集团有限公司 | 一种代码生成方法及设备 |
CN113157261B (zh) * | 2021-03-31 | 2024-04-16 | 上海万物新生环保科技集团有限公司 | 一种代码生成方法及设备 |
CN114237614A (zh) * | 2021-12-14 | 2022-03-25 | 北京奇艺世纪科技有限公司 | 应用程序的处理方法、装置、电子设备和存储介质 |
CN115016794A (zh) * | 2022-06-01 | 2022-09-06 | 北京有竹居网络技术有限公司 | 代码生成方法、装置、设备及介质 |
CN115525260A (zh) * | 2022-10-08 | 2022-12-27 | 在线途游(北京)科技有限公司 | 一种基于protobuf的代码生成方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111475150B (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475150B (zh) | 一种跨语言绑定方法、装置、设备及存储介质 | |
US10509854B2 (en) | Annotation processing of computer files | |
TWI556170B (zh) | 將作業系統之原始應用程式介面投射至其它程式語言(二) | |
US10423397B2 (en) | Systems and/or methods for type inference from machine code | |
CN102117241A (zh) | 一种多核系统调试方法和多核系统 | |
US10983771B1 (en) | Quality checking inferred types in a set of code | |
US10846417B2 (en) | Identifying permitted illegal access operations in a module system | |
CN111158665B (zh) | 代码生成方法及装置、电子设备和存储介质 | |
CN113687817A (zh) | 一种消息格式解析器及解析方法 | |
CN113138755A (zh) | 一种json序列化和反序列化的优化方法及系统 | |
CN105867886B (zh) | 一种写表格的方法及装置 | |
CN113961238A (zh) | 对象转换方法、装置及电子设备和存储介质 | |
CN115599388B (zh) | 一种api接口文档生成方法、存储介质及电子设备 | |
CN113176877B (zh) | 实体类生成方法、装置及存储介质 | |
US11106522B1 (en) | Process memory resurrection: running code in-process after death | |
US20200042297A1 (en) | Property filtering | |
CN119847605B (zh) | 一种区块链智能合约的指令扩充管理方法 | |
CN118519859B (zh) | 驱动程序信息获取方法、装置及存储介质 | |
CN117270962B (zh) | 一种处理着色语言的方法、装置、存储介质及电子设备 | |
WO2022074712A1 (ja) | 仕様情報抽出装置、仕様情報抽出方法及びプログラム | |
CN117130982A (zh) | 生成项目结构目录文档的方法、装置、电子设备及介质 | |
CN117348887A (zh) | 一种代码压缩方法、装置、设备及存储介质 | |
WO2025123954A1 (zh) | 编程语言的类型推断的方法及装置 | |
CN118642937A (zh) | 一种测试用例生成方法及相关系统 | |
CN118193387A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 510000 room 306, 3rd floor, 43 Sicheng Road, software park, Tianhe District, Guangzhou City, Guangdong Province Applicant after: GUANGZHOU ZHIYUAN ELECTRONICS Co.,Ltd. Address before: 510000 room 517, 1023 Gaopu Road, Tianhe Software Park, Tianhe District, Guangzhou City, Guangdong Province Applicant before: GUANGZHOU ZHIYUAN ELECTRONICS Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |