CN113312057B - 一种代码处理方法、编程辅助方法、介质及电子设备 - Google Patents
一种代码处理方法、编程辅助方法、介质及电子设备 Download PDFInfo
- Publication number
- CN113312057B CN113312057B CN202110673441.8A CN202110673441A CN113312057B CN 113312057 B CN113312057 B CN 113312057B CN 202110673441 A CN202110673441 A CN 202110673441A CN 113312057 B CN113312057 B CN 113312057B
- Authority
- CN
- China
- Prior art keywords
- code
- identifier
- language
- class
- conversion
- 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.)
- Active
Links
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/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种代码处理方法、编程辅助方法、介质及电子设备。所述代码处理方法包括:获取所述目标代码中的辨识符作为第一辨识符,其中,所述第一辨识符为第一语言;根据目标编程语言和所述第一辨识符获取转换代码,其中,所述转换代码用于将所述第一辨识符转换为第二辨识符,所述第二辨识符为第二语言;根据所述转换代码生成一代码转换文件。所述代码处理方法允许用户以自己熟悉的第二语言进行编程,有利于降低编程门槛,提高编程效率。
Description
技术领域
本发明涉及一种文字处理方法,特别是涉及一种代码处理方法、编程辅助方法、介质及电子设备。
背景技术
随着计算机技术的不断发展,计算机编程能力已成为一项非常重要的技能。现有技术中,编程语言通常以英文为载体,例如,常用的关键词以及配套的库、框架和API(Application Programming Interface,应用程序接口)绝大多数情况下都是以英文命名。这意味着对于母语非英文的人群来说,为了编程需要首先掌握英文,这无形之中提高了编程的门槛,不利于编程的学习。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种代码处理方法、编程辅助方法、介质及电子设备,用于解决现有技术中为了编程需要首先掌握英文的问题。
为实现上述目的及其他相关目的,本发明的第一方面提供一种代码处理方法,用于对目标代码进行处理,所述代码处理方法应用于一电子设备,包括:获取所述目标代码中的辨识符作为第一辨识符,其中,所述第一辨识符为第一语言;根据目标编程语言和所述第一辨识符获取转换代码,其中,所述转换代码用于将所述第一辨识符转换为第二辨识符,所述第二辨识符为第二语言;根据所述转换代码生成一代码转换文件。
于所述第一方面的一实施例中,所述第一辨识符包括基础类型,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法包括:根据所述目标编程语言和所述基础类型生成基础类型转换代码,其中,所述基础类型转换代码用于将所述基础类型的名字转换为对应的化名,所述化名为所述第二语言。
于所述第一方面的一实施例中,所述第一辨识符包括第一类,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法包括:根据所述目标编程语言和所述第一类生成类转换代码,其中,所述类转换代码用于创建所述第一类的子类作为第二类,所述第二类继承于所述第一类,所述第二类的名字为所述第二语言且对应于所述第一类的名字。
于所述第一方面的一实施例中,所述第一辨识符还包括第一方法,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法还包括:根据所述目标编程语言和所述第一方法生成方法转换代码,其中,所述方法转换代码用于在所述第二类中创建对应于所述第一方法的第二方法,所述第二方法的功能与所述第一方法相同,所述第二方法的名字为所述第二语言且对应于所述第一方法的名字。
于所述第一方面的一实施例中,所述第一辨识符还包括属性,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法还包括:根据所述目标编程语言和所述属性生成第一属性转换代码,其中,所述第一属性转换代码用于在所述第二类中创建对应于所述属性的镜像属性,所述镜像属性的名字为所述第二语言且对应于所述属性的名字,所述镜像属性的读取函数返回所述属性的值,所述镜像属性的赋值函数更新所述属性的值;或者根据所述目标编程语言和所述属性生成第二属性转换代码,其中,所述第二属性转换代码用于在所述第二类中增加所述属性的读取函数和赋值函数,所述读取函数和所述赋值函数的名字为所述第二语言。
于所述第一方面的一实施例中,所述第一辨识符还包括函数和/或变量。
本发明的第二方面提供另一种代码处理方法,应用于一电子设备,所述代码处理方法包括:获取保留字对照表和/或辨识符对照表,其中,所述保留字对照表包括目标代码中的第一保留字及其对应的第二保留字,所述第一保留字为第一语言,所述第二保留字为第二语言,所述辨识符对照表包括目标代码中的第一辨识符及其对应的第二辨识符,所述第一辨识符为第一语言,所述第二辨识符为第二语言;获取用户输入的用户代码;根据所述保留字对照表,将所述用户代码中的第二保留字替换为对应的第一保留字,和/或将所述用户代码中的第二辨识符替换为对应的第一辨识符。
于所述第二方面的一实施例中,所述代码处理方法还包括:获取所述用户代码中第一类的字面量,其中,所述第一类的名字为所述第一语言;通过调用第二类构造器将所述字面量替换成第二类的实例,其中,所述第二类继承于所述第一类,所述第二类的名字为所述第二语言且对应于所述第一类的名字。
于所述第二方面的一实施例中,所述代码处理方法还包括:获取用户输入的第二保留字和/或第二辨识符;根据所述保留字对照表获取所述用户输入的第二保留字对应的第一保留字,和/或根据所述辨识符对照表获取所述用户输入的第二辨识符对应的第一辨识符;根据所述对应的第一保留字进行自动完成计算,和/或根据所述对应的第一辨识符进行自动完成计算,并获取自动完成计算结果;将所述自动完成计算结果反馈给用户。
本发明的第三方面提供一种编程辅助方法,所述编程辅助方法包括:获取代码转换文件,其中,所述代码转换文件通过本发明第一方面任一项所述的代码处理方法生成;将所述代码转换文件添加至开发环境中;获取用户输入的用户代码;在编译前,采用本发明第二方面任一项所述的代码处理方法对所述用户代码进行处理。
本发明的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明第一方面任一项或第二方面任一项所述的代码处理方法,或本发明第三方面所述的编程辅助方法。
本发明的第五方面提供一种电子设备,所述电子设备包括:存储器,存储有一计算机程序;处理器,与所述存储器通信相连,调用所述计算机程序时执行本发明第一方面任一项或第二方面任一项所述的代码处理方法,或本发明第三方面所述的编程辅助方法。
如上所述,本发明所述代码处理方法、编程辅助方法、介质及电子设备的一个技术方案具有以下有益效果:
所述代码处理方法能够获取目标代码中的第一辨识符,并根据目标编程语言和所述第一辨识符获取转换代码,且根据所述转换代码生成代码转换文件,其中,所述转换代码用于将所述第一辨识符转换为第二辨识符,所述第一辨识符为第一语言,所述第二辨识符为第二语言。基于此,当开发环境中包含所述代码转换文件时,用户采用第二语言编程即可实现与第一语言相同的编程效果,因此,所述代码处理方法允许用户以自己熟悉的语言进行编程,有利于降低编程门槛,提高编程效率。
附图说明
图1A显示为本发明一具体实施例中所述代码处理方法的流程图。
图1B显示为本发明一具体实施例中所述代码处理方法的流程图。
图2显示为本发明一具体实施例中所述代码处理方法的流程图。
图3显示为本发明一具体实施例中所述代码处理方法的关键步骤流程图。
图4显示为本发明一具体实施例中所述代码处理方法的关键步骤流程图。
图5显示为本发明一具体实施例中所述编程辅助方法的流程图。
图6显示为本发明一具体实施例中所述电子设备的结构示意图。
元件标号说明
600 电子设备
610 存储器
620 处理器
630 显示器
S11a~S13a 步骤
S11b~S18b 步骤
S21~S23 步骤
S31~S32 步骤
S41~S44 步骤
S51~S54 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。此外,在本文中,诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
现有技术中,编程语言通常以英文为载体,例如,常用的关键词以及配套的库、框架和API绝大多数情况下都是以英文命名。这意味着对于母语非英文的人群来说,为了编程需要首先掌握英文,这无形之中提高了编程的门槛,不利于编程的学习。针对这一问题,本发明提供一种代码处理方法,所述代码处理方法能够获取目标代码中的第一辨识符,并根据目标编程语言和所述第一辨识符获取转换代码,并根据所述转换代码生成代码转换文件,其中,所述转换代码用于将所述第一辨识符转换为第二辨识符,所述第一辨识符为第一语言,所述第二辨识符为第二语言。基于此,当开发环境中包含所述代码转换文件时,用户采用第二语言编程即可实现与第一语言相同的编程效果,因此,所述代码处理方法允许用户以自己熟悉的语言进行编程,有利于降低编程门槛,提高编程效率。
于本发明的一实施例中,所述代码处理方法用于对目标代码进行处理,所述目标代码例如为框架、库、API(Application Programming Interface,应用程序接口)、开发人员或者用户自行编写的代码等。所述代码处理方法应用于一电子设备,所述电子设备包括但不限于电脑、智能终端。具体地,请参阅图1A,本实施例中,所述代码处理方法包括:
S11a,获取所述目标代码中的辨识符作为第一辨识符,其中,所述第一辨识符为第一语言,所述第一辨识符是指所述目标代码中需要转换为第二语言的辨识符,所述第一语言例如为英语,所述第二语言例如为汉语,所述辨识符例如为基础类型、变量、函数、类、属性、方法等。
S12a,根据目标编程语言和所述第一辨识符获取转换代码,其中,所述转换代码用于将所述第一辨识符转换为第二辨识符,所述第二辨识符为第二语言。所述目标编程语言可以为任一种编程语言,例如,C语言、Java、Python等。所述目标编程语言可以由用户指定,也可以由系统默认。所述第二辨识符与所述第一辨识符具有相同的编程效果,例如,若所述第一辨识符为函数名,所述第二辨识符同样也为函数名,又例如,若所述第一辨识符为变量类型,则所述第二辨识符同样也为变量类型。并且,所述转换代码为符合所述目标编程语言语法规则的代码。
需要说明的是,本步骤中根据所述目标编程语言和所述第一辨识符获取所述转换代码,是指根据所述第一辨识符获取符合所述目标编程语言规范的所述转换代码。
可选地,当所述目标代码具有头文件(header files)时,步骤S12可以通过自动扫描所述目标代码的头文件来获取所述第一辨识符。
S13a,根据所述转换代码生成一代码转换文件,优选地,所述代码转换文件包含所有的所述转换代码。
在具体应用中,将所述代码转换文件添加到开发环境中,所述开发环境就可以支持用户采用第二语言进行编程,并实现所述目标代码中的相应功能。例如,当所述目标代码为一目标库时,将所述代码转换文件添加到开发环境以后,所述开发环境即可支持用户采用第二语言调用该目标库中的函数、变量等内容。因此,本实施例所述代码处理方法允许用户以自己熟悉的第二语言进行编程,因而能够降低编程门槛,有利于用户对编程的学习,也能提升编程人员的编程效率。
于本发明的一实施例中,所述代码处理方法还包括:根据所述第一辨识符生成一多语言辨识符描述文件,并将开发人员或用户输入的、各所述第一辨识符在所述第二语言中的对应表达添加到所述多语言辨识符描述文件中。所述辨识符描述文件例如为JSON文件,其包括步骤S12中获取的各所述第一辨识符及其在所述第二语言中的对应表达。
可选地,本实施例中,在生成所述多语言辨识符描述文件后,所述代码处理方法还包括:在显示器上显示各所述第一辨识符,并提示用户输入各所述第一辨识符在所述第二语言中的对应表达。此时,当用户输入某一辨识符A在所述第二语言中的对应表达a时,将该对应表达a添加到所述多语言标识符描述文件中。
进一步可选地,若用户未输入某一或某些第一辨识符在所述第二语言中的对应表达,则认为该某一或某些第一辨识符无需进行转换。
于本发明的一实施例中,所述第一辨识符包括基础类型,所述基础类型例如为整型(int)、浮点型(float)等除了类(class)之外的类型。本实施例中,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法包括:根据所述目标编程语言和所述基础类型生成基础类型转换代码,所述基础类型转换代码用于将所述基础类型的名字转换为对应的化名,所述化名为所述第二语言。
例如,步骤S13可以调用一基础类型转换模板并将所述基础类型及其对应的化名添加入所述基础类型转换模板中即可生成所述基础类型转换代码,其中,所述基础类型对应的化名可以为所述基础类型在所述第二语言中的对应表达,该对应表达可以从所述多语言辨识符描述文件中获取,也可以通过电子设备自动翻译所述基础类型的名字得到。所述基础类型转换模板例如为:typealias化名=<基础类型>,当步骤S12中获取到的基础类型为int时,步骤S13可以利用该基础类型转换模板生成相应的基础类型转换代码:typealias整型=int。
需要说明的是,上述根据基础类型转换模板生成所述基础类型转换代码仅为本实施例的一种可行方式,但本实施例并不以此为限,例如,步骤S13也可以将所述基础类型展示给开发人员,以使开发人员人工根据所述基础类型编写所述基础类型转换代码,步骤S13可以根据开发人员的输入直接获取所述基础类型转换代码。
于本发明的一实施例中,所述第一辨识符包括第一类,所述第一类是指所述目标代码中需要转换为所述第二语言的类。本实施例中,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法包括:根据所述目标编程语言和所述第一类生成类转换代码,其中,所述类转换代码用于创建所述第一类的子类作为第二类,所述第二类继承于所述第一类,所述第二类的名字为所述第二语言且对应于所述第一类的名字。其中,对应于所述第一类的名字可以为所述第一类的名字在所述第二语言中的对应表达,该对应表达可以从所述多语言描述文件中获取,也可以通过电子设备自动翻译所述第一类的名字得到。
例如,步骤S13可以调用一类转换模板并将所述第一类及其在所述第二语言中的对应表达添加至所述类转换模板中,即可生成所述类转换代码。所述类转换模板例如为:class<对应表达>extends<第一类>{},此时,假设步骤S12中获取到的第一类为Person类,步骤S13利用该类转换模板生成相应的类转换代码:class人extends Person{}。
需要说明的是,上述根据类转换模板生成所述类转换代码仅为本实施例的一种可行方式,但本实施例并不以此为限,例如,步骤S13也可以将所述第一类展示给开发人员,以使开发人员人工根据所述第一类编写所述类转换代码,步骤S13可以根据开发人员的输入直接获取所述类转换代码。
于本发明的一实施例中,所述第一辨识符还包括第一方法,其中,所述第一方法是指所述第一类中需要转换为所述第二语言的方法。本实施例中,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法还包括:根据所述目标编程语言和所述第一方法生成方法转换代码,其中,所述方法转换代码用于在所述第二类中创建对应于所述第一方法的第二方法,所述第二方法的功能与所述第一方法相同,所述第二方法的名字为所述第二语言且对应于所述第一方法的名字。其中,对应于所述第一方法的名字可以为所述第一方法的名字在所述第二语言中的对应表达,该对应表达可以从所述多语言描述文件中获取,也可以通过电子设备自动翻译所述第一方法的名字得到。需要说明的是,所述第一方法包含于作为父类的所述第一类中,所述第二方法包含于作为子类的所述第二类中。
例如,步骤S13可以调用一方法转换模板并将所述第一方法及其在所述第二语言中的对应表达添加至所述方法转换模板中,即可生成所述方法转换代码。所述方法转换模板例如为:void<对应表达>(){…},此时,假设步骤S12中获取到的第一方法为void print(){…},步骤S13利用该方法转换模板生成相应的方法转换代码:void打印(){…}。
需要说明的是,上述根据方法转换模板生成所述方法转换代码仅为本实施例的一种可行方式,但本实施例并不以此为限,例如,步骤S13也可以将所述第一方法展示给开发人员,以使开发人员人工根据所述第一方法编写所述方法转换代码,步骤S13可以根据开发人员的输入直接获取所述方法转换代码。
优选地,步骤S13通过在所述第二方法的内部调用所述第一方法来实现所述第二方法的功能与所述第一方法相同。例如,假设步骤S12中获取到的第一方法为void print(){…},则所述方法转换代码可以为:void打印(){print();}。
可选地,所述第一方法包括参数,此时,所述第二方法同样包括参数,且所述第二方法中的参数名和参数类型为所述第一方法中的参数名和参数类型在所述第二语言中的对应表达。例如,若所述第一方法包括参数“float Price”,则所述第二方法包括参数“浮点型价格”。
可选地,所述第一方法包括返回参数,此时,所述第二方法同样包括返回参数,且所述第二方法中的返回参数的名称和类型、为所述第一方法中的返回参数的名称和类型在所述第二语言中的对应表达。
于本发明的一实施例中,所述第一辨识符还包括属性,其中,所述属性是指所述第一类中需要转换为所述第二语言的属性。本实施例中,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法包括:
若所述目标编程语言支持变量读写函数,根据所述目标编程语言和所述属性生成第一属性转换代码。其中:所述第一属性转换代码用于在所述第二类中创建对应于所述属性的镜像属性;所述镜像属性的名字为所述第二语言且对应于所述属性的名字,例如可以为所述属性的名字在所述第二语言中的对应表达;所述镜像属性的类型为所述属性的类型在所述第二语言中的对应表达;所述镜像属性的读取函数(getter)返回所述属性的值,所述镜像属性的赋值函数(setter)更新所述属性的值。例如,步骤S13可以调用一第一属性转换模板并将所述属性及其在所述第二语言中的对应表达添加至所述第一属性转换模板中,即可生成所述第一属性转换代码。
若所述目标编程语言不支持变量读写函数,根据所述目标编程语言和所述属性生成第二属性转换代码,其中,所述第二属性转换代码不定义镜像属性,而是用于在所述第二类中创建所述属性的读取函数和赋值函数,所述读取函数和所述赋值函数的名字为所述第二语言,且所述读取函数用于获取所述属性的值,所述赋值函数用于改变所述属性的值。
例如,步骤S13可以调用第二属性转换模板并将所述属性及其在所述第二语言中的对应表达添加至所述第二属性转换模板中,即可生成所述第二属性转换代码。基于所述第二属性转换代码,用户可以直接使用所述属性的读取函数和赋值函数。
需要说明的是,上述根据第一或第二属性转换模板生成所述第一或第二属性转换代码作为所述属性转换代码仅为本实施例的一种可行方式,但本实施例并不以此为限,例如,步骤S13也可以将所述属性展示给开发人员,以使开发人员人工根据所述属性编写所述属性转换代码,步骤S13可以根据开发人员的输入直接获取所述属性转换代码。
于本发明的一实施例中,所述第一辨识符还包括函数。本实施例中,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法还包括:根据所述目标编程语言和所述第一函数生成函数转换代码,其中,所述函数转换代码用于在所述第二类中创建对应于所述第一函数的第二函数,所述第二函数的功能与所述第一函数相同,所述第二函数的名字为所述第二语言且对应于所述第一函数的名字。可以理解的是,当所述第一辨识符为函数时与所述第一辨识符为方法时获取所述转换代码的方式类似,此处不做过多赘述。
于本发明的一实施例中,所述第一辨识符还包括变量。本实施例中,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法还包括:根据所述目标编程语言和所述变量生成第一变量转换代码,其中,所述第一变量转换代码用于在所述第二类中创建对应于所述变量的镜像变量,所述镜像变量的名字为所述第二语言且对应于所述变量的名字,所述镜像变量的读取函数返回所述变量的值,所述镜像变量的赋值函数更新所述变量的值;或者根据所述目标编程语言和所述变量生成第二变量转换代码,其中,所述第二变量转换代码用于在所述第二类中增加所述变量的读取函数和赋值函数,所述读取函数和所述赋值函数的名字为所述第二语言。应当理解的是,当所述第一辨识符为变量时与所述第一辨识符为属性时获取所述转换代码的方式类似,此处不做过多赘述。
请参阅图1B,于本发明的一实施例中,所述目标代码具有头文件,所述代码处理方法包括:
S11b,扫描所述目标代码的头文件,以获取所述目标代码中的辨识符作为第一辨识符。其中,所述第一辨识符包括基础类型、变量、函数、类、方法和/或属性,且所述第一辨识符为第一语言。
S12b,根据所述第一辨识符生成一多语言辨识符描述文件,所述多语言辨识符描述文件例如为JSON格式。此时,所述多语言辨识符描述文件只包括各所述第一辨识符。
S13b,获取用户输入的所述第一辨识符在第二语言中的对应表达,并将其添加至所述多语言辨识符描述文件。此时,所述多语言辨识符描述文件包含所述第一辨识符及其在所述第二语言中的对应表达。
可选地,当用户未指定其中的一个或多个辨识符在所述第二语言中的对应表达时,默认为该一个或多个辨识符无需转换为所述第二语言。
S14b,根据所述第一辨识符中的基础类型生成基础类型转换代码。其中,所述基础类型转换代码用于将所述基础类型的名字转换为对应的化名。例如,当目标编程语言为C++,且所述目标代码中的基础类型为int、char、string和void时,步骤S14b生成的基础类型转换代码例如为:using整数=int;using字符=char;using字符串=string;using空=void。
S15b,根据所述第一辨识符中的函数生成函数转换代码,其中,所述函数转换代码用于创建所述函数的对应函数,所述对应函数的功能与所述函数相同,且所述对应函数的名字为所述第二语言且对应于所述函数的名字。优选地,所述函数转换代码通过在所述对应函数中调用所述函数来使二者的功能相同,例如,当所述目标语言为C++时,若所述目标代码中包含一函数:
则步骤S15b生成的函数转换代码例如为:
整数计算(整数数字1,整数数字2){
return compute(数字1,数字2);
}。
S16b,根据所述第一辨识符中的变量生成变量转换代码。
可选地,当所述目标编程语言中的变量不支持赋值函数和读取函数时,例如C++,所述变量转换代码用于为所述变量定义赋值函数和读取函数。例如,若所述目标代码中包含int型的变量money,则步骤S16b生成的变量转换代码例如为:
可选地,当所述目标编程语言的变量支持赋值函数和读取函数时,例如Swift,所述变量转换代码用于创建所述变量的镜像变量,所述镜像变量的名字为所述第二语言且对应于所述变量的名字,所述镜像变量的读取函数返回所述变量的值,所述镜像变量的赋值函数更新所述变量的值。例如,若所述目标代码中包含int型的变量money,则步骤S16b生成的变量转换代码例如为:
S17b,根据所述第一辨识符中的类及所述类中包含的方法和属性,生成类转换代码、方法转换代码和属性转换代码。其中,所述类转换代码用于创建所述类的子类,所述方法转换代码用于在所述子类中创建所述方法的对应方法,所述属性转换代码用于在所述子类中创建所述属性的镜像属性,或者用于在所述子类中创建所述属性的赋值函数和读取函数。例如,若所述目标代码中包含的类为:
则步骤S17b生成的类转换代码、方法转换代码和属性转换代码为:
S18b,将所述基础类型转换代码、所述函数转换代码、所述变量转换代码、所述类转换代码、所述方法转换代码和所述属性转换代码添加至一代码转换文件中。
需要说明的是,上述步骤S14b~S17b仅用于标识相应步骤的名称,而非用于限定步骤的顺序,实际应用中可以根据实际需求调整上述步骤的顺序。此外,实际应用中也可以根据实际需求仅选取步骤S14b~S17b中的一个或多个步骤执行,例如,当所述目标代码中只包含函数时,则可以仅执行步骤S15b而不执行步骤S14b、S16b和S17b。
本发明还提供另一种代码处理方法。于本发明的一实施例中,所述代码处理方法应用于一电子设备,并用于在编译器对用户编写的用户代码进行编译之前对所述用户代码进行处理。具体地,请参阅图2,所述代码处理方法包括:
S21,获取保留字对照表和/或辨识符对照表,其中,所述保留字对照表包括目标代码中的第一保留字及其对应的第二保留字,所述辨识符对照表包括目标代码中的第一辨识符及其对应的第二辨识符。所述目标代码例如为库、框架、用户或开发人员自行编写的代码等,此外,所述目标代码也可以泛指目标编程语言,此时,所述保留字对照表中包含所述目标编程语言中的第一保留字及其对应的第二保留字。所述第一保留字和所述第一辨识符为第一语言,所述第一语言为编译器能够识别的语言,例如为英语,所述第二保留字和所述第二辨识符为第二语言,所述第二语言是指用户熟悉的语言,例如为汉语。所述第一保留字例如为if、else,其对应的第二保留字例如为“如果”、“否则”。所述保留字对照表和所述辨识符对照表例如可以由开发人员预先编写。
S22,获取用户代码。其中,所述用户代码为用户利用所述目标编程语言编写的代码,所述用户代码的全部或者部分为所述第二语言。
S23,根据所述保留字对照表,将所述用户代码中的第二保留字替换为对应的第一保留字,和/或根据所述辨识符对照表,将所述用户代码中的第二辨识符替换为对应的第一辨识符。
可选地,所述代码处理方法还包括:创建一插件,所述插件在编译之前被执行,且所述插件被执行时实现上述步骤S21~S23。
基于本实施例所述的代码处理方法,所述电子设备在每次对所述用户代码进行编译之前都会根据所述保留字对照表将所述用户代码中的第二保留字替换为编译器能够识别的第一保留字,和/或根据所述辨识符对照表将所述用户代码中的第二辨识符替换为编译器能够识别的第一辨识符,因而所述编译器能够对用户采用所述第二语言编写的所述用户代码进行编译。因此,所述代码处理方法允许用户采用所述第二语言编写保留字和/或辨识符,同样能够降低编程门槛,有利于用户对编程的学习。
请参阅图3,于本发明的一实施例中,所述代码处理方法还包括:
S31,获取所述用户代码中第一类的字面量(literal),其中,字面量是用于表达源代码中一个固定值的表示法(notation),几乎所有计算机编程语言都具有对基本值的字面量表示。
S32,通过调用第二类构造器将所述字面量替换成第二类的实例,其中,所述第二类继承于所述第一类,所述第二类的名字为所述第二语言且对应于所述第一类的名字。
通常情况下,对于字符串字面量,用户无需指明其类型,编译器会自动将字符串字面量创建为相应的类型,例如,在Python中会自动将字符串字面量创建为str类型。然而,当用户使用所述第二语言进行编程时,如果将字符串字面量自动创建为str类型,则用户无法采用第二语言调用该字符串字面量的方法和/或属性。针对这一问题,本实施例中步骤S32通过调用第二类构造器将所述字面量替换成第二类的实例,由于所述第二类继承于所述第一类,基于所述第二类,用户能够采用所述第二语言调用所述第二类中的第二方法以实现与所述第一类中的第一方法相同的功能,也能够采用所述第二语言读取或修改所述第一类中的属性。例如,假设所述第二语言为中文且str的子类名称为“字符串”,若用户输入a=“Hello World”这段代码,则在编译前利用所述步骤S31~S32将其替换成a=字符串(“Hello World”),以保证所述用户代码能够被正常编译。
请参阅图4,于本发明的一实施例中,所述代码处理方法还包括:
S41,获取用户输入的第二保留字和/或第二辨识符。
S42,根据所述保留字对照表获取所述用户输入的第二保留字对应的第一保留字,和/或根据所述辨识符对照表获取所述用户输入的第二辨识符对应的第一辨识符。
S43,根据所述对应的第一保留字进行自动完成(auto-completion)计算,和/或根据所述对应的第一辨识符进行自动完成计算,并获取自动完成计算结果。其中,自动完成计算可以采用现有技术实现,此处不做赘述。
S44,将所述自动完成计算结果反馈给用户。例如,可以在开发环境中显示所述自动完成计算结果,以提示用户进行编程。
可选地,步骤S44的实现方法包括:若所述自动完成计算结果包含有第一保留字,则根据所述保留字对照表将该自动完成计算结果中的第一保留字替换为对应的第二保留字后,再将所述自动完成计算结果反馈给用户,否则,将所述自动完成计算结果直接反馈给用户。
可选地,步骤S44的实现方法包括:若所述自动完成计算结果包含有第一辨识符,则根据所述辨识符对照表将该自动完成计算结果中的第一辨识符替换为对应的第二辨识符后,再将所述自动完成计算结果反馈给用户,否则,将所述自动完成计算结果直接反馈给用户。
基于以上对所述代码处理方法的描述,本发明还提供一种编程辅助方法。请参阅图5,于本发明的一实施例中,所述编程辅助方法包括:
S51,获取代码转换文件,其中,所述代码转换文件通过图1A或图1B所示的代码处理方法生成。
S52,将所述代码转换文件添加至开发环境中,所述开发环境例如为IDE(Integrated Development Environment,集成开发环境)。此后,用户在所述开发环境中进行编程时即可采用所述第二语言调用所述目标代码中的函数、变量、类等辨识符。
S53,获取用户输入的用户代码,其中,部分或全部的所述用户代码为所述第二语言。
S54,在编译前,采用图2所示的代码处理方法对所述用户代码进行处理以获取输出源代码文件,此后,编译器能够对所述输出源代码文件进行编译。
基于以上对所述代码处理方法和所述编程辅助方法的描述,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现图1A、图1B或图2所示的代码处理方法,或实现图5所示的编程辅助方法。
基于以上对所述代码处理方法和所述编程辅助方法的描述,本发明还提供一种电子设备。请参阅图6,于本发明的一实施例中,所述电子设备600包括存储器610和处理器620。其中,所述存储器610存储有一计算机程序,所述处理器620与所述存储器610通信相连,用于调用所述计算机程序时执行图1A、图1B或图2所示的代码处理方法,或执行图5所示的编程辅助方法。
可选地,所述电子设备600还可以包括显示器630,所述显示器630与所述处理器620和所述存储器610通信相连,用于显示所述代码处理方法或所述编程辅助方法的相关GUI交互界面。
本发明所述的代码处理方法和所述编程辅助方法的保护范围不限于本实施例列举的步骤执行顺序,凡是根据本发明的原理所做的现有技术的步骤增减、步骤替换所实现的方案都包括在本发明的保护范围内。
本发明所述代码处理方法能够获取目标代码中的第一辨识符,并根据目标编程语言和所述第一辨识符获取转换代码,且根据所述转换代码生成代码转换文件,其中,所述转换代码用于将所述第一辨识符转换为第二辨识符,所述第一辨识符为第一语言,所述第二辨识符为第二语言。基于此,当开发环境中包含所述代码转换文件时,用户采用第二语言编程即可实现与第一语言相同的编程效果,因此,所述代码处理方法允许用户以自己熟悉的语言进行编程,有利于降低编程门槛。
此外,基于本发明所述的编程辅助方法,用户可以在开发环境中直接使用第二语言进行编程,且用户使用第二语言编写的用户代码在编译之前会采用图2所示的代码处理方法进行处理,因而能够被编译器所识别并编译。
综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (9)
1.一种代码处理方法,其特征在于,用于对目标代码进行处理,所述代码处理方法应用于一电子设备,包括:
获取所述目标代码中的辨识符作为第一辨识符,其中,所述第一辨识符为第一语言,且所述第一辨识符包括第一类和属性;
根据目标编程语言和所述第一辨识符获取转换代码,其中,所述转换代码用于将所述第一辨识符转换为第二辨识符,所述第二辨识符为第二语言;
根据所述转换代码生成一代码转换文件;
其中,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法包括:
根据所述目标编程语言和所述第一类生成类转换代码,其中,所述类转换代码用于创建所述第一类的子类作为第二类,所述第二类继承于所述第一类,所述第二类的名字为所述第二语言且对应于所述第一类的名字;
根据所述目标编程语言和所述属性生成第一属性转换代码或第二属性转换代码,其中,所述第一属性转换代码用于在所述第二类中创建对应于所述属性的镜像属性,所述镜像属性的名字为所述第二语言且对应于所述属性的名字,所述镜像属性的读取函数返回所述属性的值,所述镜像属性的赋值函数更新所述属性的值,所述第二属性转换代码用于在所述第二类中增加所述属性的读取函数和赋值函数,所述读取函数和所述赋值函数的名字为所述第二语言。
2.根据权利要求1所述的代码处理方法,其特征在于,所述第一辨识符还包括基础类型,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法还包括:
根据所述目标编程语言和所述基础类型生成基础类型转换代码,其中,所述基础类型转换代码用于将所述基础类型的名字转换为对应的化名,所述化名为所述第二语言。
3.根据权利要求1所述的代码处理方法,其特征在于,所述第一辨识符还包括第一方法,根据所述目标编程语言和所述第一辨识符获取所述转换代码的实现方法还包括:
根据所述目标编程语言和所述第一方法生成方法转换代码,其中,所述方法转换代码用于在所述第二类中创建对应于所述第一方法的第二方法,所述第二方法的功能与所述第一方法相同,所述第二方法的名字为所述第二语言且对应于所述第一方法的名字。
4.根据权利要求1-3任一项所述的代码处理方法,其特征在于:所述第一辨识符还包括函数和/或变量。
5.一种代码处理方法,其特征在于,应用于一电子设备,所述代码处理方法包括:
获取保留字对照表和/或辨识符对照表,其中,所述保留字对照表包括目标代码中的第一保留字及其对应的第二保留字,所述第一保留字为第一自然语言,所述第二保留字为第二自然语言,所述辨识符对照表包括目标代码中的第一辨识符及其对应的第二辨识符,所述第一辨识符为第一自然语言,所述第二辨识符为第二自然语言;
获取用户输入的用户代码;
根据所述保留字对照表,将所述用户代码中的第二保留字替换为对应的第一保留字,和/或根据所述辨识符对照表,将所述用户代码中的第二辨识符替换为对应的第一辨识符;
获取所述用户代码中第一类的字面量,其中,所述第一类的名字为所述第一自然语言;
通过调用第二类构造器将所述字面量替换成第二类的实例,其中,所述第二类继承于所述第一类,所述第二类的名字为所述第二自然语言且对应于所述第一类的名字。
6.根据权利要求5所述的代码处理方法,其特征在于,所述代码处理方法还包括:
获取用户输入的第二保留字和/或第二辨识符;
根据所述保留字对照表获取所述用户输入的第二保留字对应的第一保留字,和/或根据所述辨识符对照表获取所述用户输入的第二辨识符对应的第一辨识符;
根据所述对应的第一保留字进行自动完成计算,和/或根据所述对应的第一辨识符进行自动完成计算,并获取自动完成计算结果;
将所述自动完成计算结果反馈给用户。
7.一种编程辅助方法,其特征在于,所述编程辅助方法包括:
获取代码转换文件,其中,所述代码转换文件通过权利要求1-4任一项所述的代码处理方法生成;
将所述代码转换文件添加至开发环境中;
获取用户输入的用户代码;
在编译前,采用权利要求5-6任一项所述的代码处理方法对所述用户代码进行处理。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-6任一项所述的代码处理方法,或权利要求7所述的编程辅助方法。
9.一种电子设备,其特征在于,所述电子设备包括:
存储器,存储有一计算机程序;
处理器,与所述存储器通信相连,调用所述计算机程序时执行权利要求1-6任一项所述的代码处理方法,或权利要求7所述的编程辅助方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110673441.8A CN113312057B (zh) | 2021-06-17 | 2021-06-17 | 一种代码处理方法、编程辅助方法、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110673441.8A CN113312057B (zh) | 2021-06-17 | 2021-06-17 | 一种代码处理方法、编程辅助方法、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113312057A CN113312057A (zh) | 2021-08-27 |
CN113312057B true CN113312057B (zh) | 2023-10-03 |
Family
ID=77379446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110673441.8A Active CN113312057B (zh) | 2021-06-17 | 2021-06-17 | 一种代码处理方法、编程辅助方法、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312057B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015026139A (ja) * | 2013-07-24 | 2015-02-05 | 富士電機株式会社 | プログラム生成装置、プログラム生成方法、およびプログラム生成用プログラム |
CN106155756A (zh) * | 2016-06-24 | 2016-11-23 | 北京普会科技有限公司 | 一种在计算机上实现跨人类语言编程的方法 |
CN107402746A (zh) * | 2016-05-20 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 一种自动生成代码文件的方法及装置 |
CN109271168A (zh) * | 2018-08-09 | 2019-01-25 | 上海鲸鱼机器人科技有限公司 | 一种代码转换方法、装置及设备、存储介质 |
CN109657249A (zh) * | 2018-11-21 | 2019-04-19 | 天津字节跳动科技有限公司 | 应用程序的文本自动替换方法、装置及电子设备 |
CN109976734A (zh) * | 2019-02-26 | 2019-07-05 | 林庆斌 | 一种实现母语编程的方法 |
CN110502227A (zh) * | 2019-08-28 | 2019-11-26 | 网易(杭州)网络有限公司 | 代码补全的方法及装置、存储介质、电子设备 |
CN111045678A (zh) * | 2019-11-06 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 页面执行动态代码的方法、装置、设备及存储介质 |
CN111159662A (zh) * | 2019-12-25 | 2020-05-15 | 郑州阿帕斯数云信息科技有限公司 | 一种数据的处理方法和装置 |
CN111190643A (zh) * | 2019-12-30 | 2020-05-22 | 苏州浪潮智能科技有限公司 | 程序代码注释的生成方法、系统、电子设备及存储介质 |
CN111625224A (zh) * | 2020-05-28 | 2020-09-04 | 北京百度网讯科技有限公司 | 代码生成方法、装置、设备及存储介质 |
CN111708539A (zh) * | 2020-06-17 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种应用程序代码转换方法、装置、电子设备和存储介质 |
CN112306497A (zh) * | 2020-11-03 | 2021-02-02 | 高炼 | 一种将自然语言转化为程序代码的方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030200535A1 (en) * | 2000-06-09 | 2003-10-23 | Mcnamara Benedict Bede | System for program source code conversion |
US8813047B2 (en) * | 2005-09-08 | 2014-08-19 | Alcatel Lucent | Yet another transformation language (YATL) |
US10203943B2 (en) * | 2015-08-13 | 2019-02-12 | Samsung Electronics Co., Ltd. | Static analysis and reconstruction of deep link handling in compiled applications |
-
2021
- 2021-06-17 CN CN202110673441.8A patent/CN113312057B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015026139A (ja) * | 2013-07-24 | 2015-02-05 | 富士電機株式会社 | プログラム生成装置、プログラム生成方法、およびプログラム生成用プログラム |
CN107402746A (zh) * | 2016-05-20 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 一种自动生成代码文件的方法及装置 |
CN106155756A (zh) * | 2016-06-24 | 2016-11-23 | 北京普会科技有限公司 | 一种在计算机上实现跨人类语言编程的方法 |
CN109271168A (zh) * | 2018-08-09 | 2019-01-25 | 上海鲸鱼机器人科技有限公司 | 一种代码转换方法、装置及设备、存储介质 |
CN109657249A (zh) * | 2018-11-21 | 2019-04-19 | 天津字节跳动科技有限公司 | 应用程序的文本自动替换方法、装置及电子设备 |
CN109976734A (zh) * | 2019-02-26 | 2019-07-05 | 林庆斌 | 一种实现母语编程的方法 |
CN110502227A (zh) * | 2019-08-28 | 2019-11-26 | 网易(杭州)网络有限公司 | 代码补全的方法及装置、存储介质、电子设备 |
CN111045678A (zh) * | 2019-11-06 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 页面执行动态代码的方法、装置、设备及存储介质 |
CN111159662A (zh) * | 2019-12-25 | 2020-05-15 | 郑州阿帕斯数云信息科技有限公司 | 一种数据的处理方法和装置 |
CN111190643A (zh) * | 2019-12-30 | 2020-05-22 | 苏州浪潮智能科技有限公司 | 程序代码注释的生成方法、系统、电子设备及存储介质 |
CN111625224A (zh) * | 2020-05-28 | 2020-09-04 | 北京百度网讯科技有限公司 | 代码生成方法、装置、设备及存储介质 |
CN111708539A (zh) * | 2020-06-17 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种应用程序代码转换方法、装置、电子设备和存储介质 |
CN112306497A (zh) * | 2020-11-03 | 2021-02-02 | 高炼 | 一种将自然语言转化为程序代码的方法及系统 |
Non-Patent Citations (5)
Title |
---|
Java语言国际化的设计与实现;冀振燕, 程虎, 梅嘉;软件学报(第11期);1541-1546 * |
Mohammed H. Hassan.Neural Machine Based Mobile Applications Code Translation.《2020 2nd Novel Intelligent and Leading Emerging Sciences Conference (NILES)》.2020,1-6. * |
Towards a Complete Character Set Meitei Mayek Handwritten Character Recognition;Deena Hijam等;《2018 Fourth International Conference on Computing Communication Control and Automation (ICCUBEA)》;1-5 * |
姜人和.基于API文档的功能级约束生成及应用研究.《中国优秀硕士学位论文全文数据库 信息科技辑》.2021,I138-454. * |
积木式python编程系统的研究与实现;刘正;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-406 * |
Also Published As
Publication number | Publication date |
---|---|
CN113312057A (zh) | 2021-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8418125B2 (en) | Incremental model refinement and transformation in generating commerce applications using a model driven architecture | |
Renggli et al. | Embedding languages without breaking tools | |
US9424008B2 (en) | API descriptions | |
US11487519B2 (en) | Code conversion method and system | |
WO2007013418A1 (ja) | 複数自然言語のソフトウェア説明書生成システム | |
CN113064593B (zh) | 移动app动态化的方法、装置、计算机设备及存储介质 | |
KR20080018160A (ko) | 강한 데이터 유형을 이용하여 소프트웨어 프로그램에서음성 인식 문법을 나타내기 위한 방법 | |
WO2023078053A1 (zh) | 一种代码生成方法、装置、计算机设备及存储介质 | |
CN113076167A (zh) | 一种代码处理方法及相关设备 | |
CN113312057B (zh) | 一种代码处理方法、编程辅助方法、介质及电子设备 | |
JP2005182562A (ja) | コンパイル方法および装置、ならびにコンパイラ | |
CN113934429A (zh) | 一种设计稿的转换方法、装置、计算机设备和存储介质 | |
Fan et al. | Migrating user interfaces in native mobile applications: android to iOS | |
Savic et al. | Use case specification at different levels of abstraction | |
CN116257232A (zh) | 基于表格组件的表格生成方法、装置、设备及存储介质 | |
Moutaouakkil et al. | Generating a PHP metamodel using Xtext framework | |
JP2006146613A (ja) | プログラム変換方法 | |
CN106815003A (zh) | 一种计算机语言的交互系统及交互方法 | |
Schröpfer et al. | A Generic Projectional Editor for EMF Models. | |
Sabraoui et al. | Metamodel extension approach applied to the model-driven development of mobile applications | |
Baillon et al. | Executable requirements in a safety-critical context with Ada | |
CN114443031B (zh) | 一种图形用户界面编写的方法、系统、设备和存储介质 | |
CN113296754B (zh) | 基于xml的脚本语言转换方法、编辑器、设备及存储介质 | |
CN116880837A (zh) | 一种wpf界面多语言实现系统及方法 | |
Shaban et al. | General Trans-Compiler based Mobile Applications Converter |
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: 201600 6 6, Si brick road, Si Jing Town, Songjiang District, Shanghai Applicant after: Shanghai xiaoxiongxing Education Technology Co.,Ltd. Address before: 214000 Zijin Mingdu 2-504, Yixing City, Wuxi City, Jiangsu Province Applicant before: Shanghai xiaoxiongxing Education Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |