CN115328494A - 代码生成方法、装置、设备及介质 - Google Patents

代码生成方法、装置、设备及介质 Download PDF

Info

Publication number
CN115328494A
CN115328494A CN202211067869.9A CN202211067869A CN115328494A CN 115328494 A CN115328494 A CN 115328494A CN 202211067869 A CN202211067869 A CN 202211067869A CN 115328494 A CN115328494 A CN 115328494A
Authority
CN
China
Prior art keywords
code
node
target
control flow
flow graph
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.)
Pending
Application number
CN202211067869.9A
Other languages
English (en)
Inventor
张锡强
林崇义
刘思彦
刘柏
范长杰
周锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202211067869.9A priority Critical patent/CN115328494A/zh
Publication of CN115328494A publication Critical patent/CN115328494A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种代码生成方法、装置、设备及介质,涉及计算机技术领域。该方法包括:基于低代码平台获取代码流程图,代码流程图包括多个目标节点;根据多个目标节点确定至少一个基本块,将每个基本块作为一个控制流图节点,并根据各控制流图节点生成控制流图,控制流图用于表征各基本块之间的关联关系以及各目标节点的属性信息,每个基本块包括至少一个目标节点;基于预设代码类型的语法规则,根据控制流图生成代码流程图对应的目标代码,目标代码符合语法规则中的缩进规则,应用本申请实施例,可以从目标代码的缩进结构上实现对目标代码的语法结构的管理,在一定程度上,可以避免目标代码出现解析运行报错的问题。

Description

代码生成方法、装置、设备及介质
技术领域
本申请涉及计算机技术领域,特别涉及一种代码生成方法、装置、设备及介质。
背景技术
低代码平台,是一种可视化的应用开发平台,通过低代码平台,可以用较少的代码、以较快的速度来交付应用程序,实现代码的自动化开发。
现有技术中,通过低代码平台实现代码的自动化开发时,主要基于低代码平台中预设的模板实现,其中,实现过程中,若确定好逻辑代码模板后,可以直接根据节点信息进行代码的填充,节点代码生成仅关注本节点自身包含的元素。
可以看出,现有通过低代码平台生成的功能代码,各节点仅关注本节点自身包含的元素,无法对所生成的功能代码的语法结构进行有效管理,这将导致所生成的功能代码容易出现解析运行报错的问题。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种代码生成方法、装置、设备及介质,可以从目标代码的缩进结构上实现对目标代码的语法结构的管理,在一定程度上,可以避免目标代码出现解析运行报错的问题。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本发明提供一种代码生成方法,包括:
基于低代码平台获取代码流程图,所述代码流程图包括多个目标节点;
根据多个所述目标节点确定至少一个基本块,将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图,所述控制流图用于表征各所述基本块之间的关联关系以及各所述目标节点的属性信息,每个所述基本块包括至少一个目标节点;
基于预设代码类型的语法规则,根据所述控制流图生成所述代码流程图对应的目标代码,所述目标代码符合所述语法规则中的缩进规则。
第二方面,本发明提供一种代码生成装置,包括:
获取模块,用于基于低代码平台获取代码流程图,所述代码流程图包括多个目标节点;
确定模块,用于根据多个所述目标节点确定至少一个基本块,将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图,所述控制流图用于表征各所述基本块之间的关联关系以及各所述目标节点的属性信息,每个所述基本块包括至少一个目标节点;
生成模块,用于基于预设代码类型的语法规则,根据所述控制流图生成所述代码流程图对应的目标代码,所述目标代码符合所述语法规则中的缩进规则。
第三方面,本发明提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如前述实施方式任一所述代码生成方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如前述实施方式任一所述代码生成方法的步骤。
本申请的有益效果是:
本申请实施例提供的一种代码生成方法、装置、设备及介质,包括:基于低代码平台获取代码流程图,代码流程图包括多个目标节点;根据多个目标节点确定至少一个基本块,将每个基本块作为一个控制流图节点,并根据各控制流图节点生成控制流图,控制流图用于表征各基本块之间的关联关系以及各目标节点的属性信息,每个基本块包括至少一个目标节点;基于预设代码类型的语法规则,根据控制流图生成代码流程图对应的目标代码,目标代码符合语法规则中的缩进规则,应用本申请实施例,可以从目标代码的缩进结构上实现对目标代码的语法结构的管理,在一定程度上,可以避免目标代码出现解析运行报错的问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种代码生成方法的流程示意图;
图2为本申请实施例提供的另一种代码生成方法的流程示意图;
图3为本申请实施例提供的又一种代码生成方法的流程示意图;
图4为本申请实施例提供的另一种代码生成方法的流程示意图;
图5为本申请实施例提供的一种控制流图的示意图;
图6为本申请实施例提供的又一种代码生成方法的流程示意图;
图7为本申请实施例提供的一种代码生成装置的功能模块示意图;
图8为本申请实施例提供的一种电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
针对现有技术中通过低代码平台生成功能代码时,无法对所生成的功能代码的语法结构进行有效管理导致所生成的功能代码容易出现解析运行报错的问题。
本申请实施例提供一种代码生成方法,应用该方法可以实现对目标代码的语法结构的管理,在一定程度上,可以避免目标代码出现解析运行报错的问题。
图1为本申请实施例提供的一种代码生成方法的流程示意图,该方法的执行主体可以是计算机、服务器、处理器等具备数据处理功能的电子设备,该方法可以应用于低代码平台,如图1所示,该方法可以包括:
S101、基于低代码平台获取代码流程图,代码流程图包括多个目标节点。
其中,低代码平台指的是可以基于图形化,通过拖拉拽方式实现用少量代码扩展实现个性化需求的数字技术工具平台。可选地,多个目标节点的节点关键字可以包括:if、else、while、for、break等,在此不作限定。
在一些实施例中,用户可以根据预设功能逻辑,基于低代码平台获取代码流程图,该代码流程图可以表征目标代码的逻辑性和处理顺序。可选地,根据不同的实现逻辑,代码流程图可以包括下述至少一种结构:顺序结构、选择结构、循环结构,在此不作限定。
S102、根据多个目标节点确定至少一个基本块,将每个基本块作为一个控制流图节点,并根据各控制流图节点生成控制流图,控制流图用于表征各基本块之间的关联关系以及各目标节点的属性信息。
其中,每个基本块包括至少一个目标节点,基本块是指程序顺序执行的语句序列,对于基本块来说,其中,只有一个入口和一个出口,入口就是其中的第—个语句,出口就是其中的最后一个语句,也就是说对一个基本块来说,执行时只从其入口进入,从其出口退出。基于基本块的定义可以看出,只要基本块中第一条指令被执行了,那么基本块内所有执行都会按照顺序仅执行一次。
在一些实施例中,确定基本块时,可以先确定目标节点中的根节点,根据该根节点进一步确定各基本块。可选地,目标节点的属性信息中包括start、if、else、while、for、break等节点关键字的目标节点可以作为根节点,在此不作限定。
控制流图也叫控制流程图,控制流图可以基于控制流技术生成,控制流分析(Control flow analysis,CFA),是一种确认程序控制流程的静态代码分析技术,所生成的控制流图可由编译器在内部维护,代表程序执行过程中会遍历到的所有路径,具体来说,控制流图可以用于表征各基本块之间的关联关系以及各目标节点的属性信息。
控制流图节点也即控制流图中的控制节点,该控制流图中可以包括至少一个控制流图节点,其中,每个控制流图节点可以代表一个基本块,各基本块之间的关系可以包括:各基本块之间的执行顺序、各基本块的执行次数、执行时间、执行条件等,各目标节点的属性信息可以表征各目标节点的数据结构,比如,属性信息可以包括:目标节点中的节点关键字,父节点关键字、子节点关键字、节点中所定义的变量、各变量的取值等节点结构,在此不作限定。
S103、基于预设代码类型的语法规则,根据控制流图生成代码流程图对应的目标代码,目标代码符合语法规则中缩进规则。
可选地,根据用户的实际需求,预设代码类型的语法规则可以为C、C++、java、python等任意代码类型的语法规则,在此不作限定。
其中,该预设代码类型的语法规则可以包括控制流图节点转换为目标代码的语义规则、预设代码的缩进规则等,根据上述得到的控制流图生成目标代码时可以依据该预设代码类型的语法规则生成,可以理解的是,如此,可以保证目标代码符合语法规则中缩进规则,实现对目标代码更细粒度的表达,使得可以从目标代码的缩进结构上实现对目标代码的语法结构的管理,在一定程度上,可以避免目标代码出现解析运行报错的问题。
其中,以python代码为例进行说明,Python代码的语法规则中要求代码行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束,如编写的Python代码无缩进或者缩进不正确,会直接导致Python解析运行报错,因此,应用本申请实施例,根据控制流图生成代码流程图对应的Python代码时,可以保证所生成的Python代码符合Python代码的缩进规则,也即可以保证所生成的Python代码正常解析运行。
综上,本申请实施例提供一种代码生成方法,该方法包括:基于低代码平台获取代码流程图,代码流程图包括多个目标节点;根据多个目标节点确定至少一个基本块,将每个基本块作为一个控制流图节点,并根据各控制流图节点生成控制流图,控制流图用于表征各基本块之间的关联关系以及各目标节点的属性信息,每个基本块包括至少一个目标节点;基于预设代码类型的语法规则,根据控制流图生成代码流程图对应的目标代码,目标代码符合语法规则中的缩进规则,应用本申请实施例,可以从目标代码的缩进结构上实现对目标代码的语法结构的管理,在一定程度上,可以避免目标代码出现解析运行报错的问题。
图2为本申请实施例提供的另一种代码生成方法的流程示意图。可选地,如图2所示,基于预设代码类型的语法规则,根据控制流图生成代码流程图对应的目标代码,包括:
S201、根据控制流图生成代码流程图对应的初始代码。
其中,初始代码用于表征代码流程图对应的基本代码。在一些实施例中,该初始代码可以为符合多种预设代码类型的公共语法规则的代码。举例说明,比如,多种预设代码类型可以包括:C语言、C++语言,根据控制流图生成代码流程图对应的初始代码,也即既符合C语言的语法规则的代码、又符合C++语言的语法规则的代码。当然,初始代码的定义并不以此为限。
S202、基于预设代码类型的语法规则以及各目标节点的属性信息,获取初始代码中各目标节点的缩进信息。
可选地,各目标节点的属性信息可以包括各节点中是否包括嵌套代码块的指示信息、是否为逻辑节点(logic节点)等,该嵌套代码块可以包括:循环嵌套代码块或分支嵌套代码块,在此不作限定。预设代码类型的语法规则可以包括嵌套代码块的缩进规则、逻辑节点的缩进规则等。
基于上述说明可知,根据各目标节点的属性信息,可以从该预设代码类型的语法规则中筛选确定初始代码中各目标节点的缩进信息。
比如,以Python代码为例进行说明,如目标节点用于声明逻辑签名,则逻辑的具体实现代码段新增缩进为4个字符;如目标节点中存在循环嵌套代码块或分支嵌套代码块,则该循环嵌套代码块或分支嵌套代码块缩进4个字符。举例说明,if节点会存在表达式为true和false的情况,存在多个出口,且两种情况的代码块会嵌套在if和else之后,需默认新增缩进4个字符。
S203、根据初始代码和各目标节点的缩进信息,获取代码流程图对应的目标代码。
在得到各目标节点的缩进信息后,则可以基于各目标节点的缩进信息对初始代码中的各目标节点进行缩进操作,从而得到目标代码。
图3为本申请实施例提供的又一种代码生成方法的流程示意图。可选地,如图3所示,目标节点的属性信息包括节点类型标识,上述根据控制流图生成代码流程图对应的初始代码,包括:
S301、基于预设代码类型的语法规则,根据控制流图获取各目标节点的节点类型标识。
其中,预设代码类型的语法规则可以包括预定义节点类型标识,比如,预设代码类型的语法规则可以包括:if、else、while、for等字符串为预定义节点类型标识,除此之外,其他字符串则为非节点类型标识。
在一些实施例中,各目标节点的属性信息可以包括各目标节点的节点关键字,可以基于各目标节点的节点关键字,根据预设代码类型的语法规则中预定义节点类型标识,可以匹配确定各目标节点的节点类型标识。
S302、基于各目标节点的节点类型标识,生成代码流程图对应的初始代码,初始代码标注有各目标节点的节点类型标识。
可选地,生成代码流程图对应的初始代码时,可以将各目标节点的节点类型标识标注至初始代码。比如,某初始代码可以标注有:for、if、else等节点类型标识。
基于上述说明,可以看出,应用本申请实施例,用户可以清楚地知晓初始代码中所包括的节点类型标识,便于用户基于各节点类型标识对初始代码的实现逻辑进行快速、初步分析。
图4为本申请实施例提供的另一种代码生成方法的流程示意图。可选地,目标代码标注还有代码行标识,如图4所示上述根据初始代码和各目标节点的缩进信息,获取代码流程图对应的目标代码,包括:
S401、基于预设代码类型的语法规则,确定初始代码中的至少一个换行符,得到标注有代码行标识的初始代码。
其中,该预设代码类型的语法规则还包括目标代码的换行规则,可选地,目标代码的换行规则可以包括:每一行目标代码的最大字符数、各节点的换行规则、用户自定义的换行规则等,在此不作限定。
基于该目标代码的换行规则,则可以确定初始代码中的至少一个换行符,其中,该换行符可以用“/r/n”表示。进一步地,具体实现时,可以根据所确定的至少一个换行符,对初始代码进行换行显示,其中,进行换行显示时,可以定义一个全部变量用于计算初始代码中换行符的数量,并根据该全部变量确定初始代码中各代码行的代码行标识,也即代码行的行数,得到标注有代码行标识的初始代码。
当然,需要说明的是,换行符的表示方式并不以此为限,根据实际的应用场景可以有所不同。
S402、根据标注有代码行标识的初始代码和各目标节点的缩进信息,生成代码流程图对应的目标代码。
进一步地,基于标注有代码行标识的初始代码,则可以根据各目标节点的缩进信息,对各节点进行缩进显示,从而得到代码流程图对应的目标代码。
综上,应用本申请实施例,可以实现准确的换行和缩进,保证了目标代码中逻辑层级的准确性,且可以提高目标代码的可读性;此外,应用本申请实施例,使得后续对目标代码进行执行时,若执行结果显示目标代码执行成功,可以根据代码行标识快速定位故障问题,提高目标代码的开发效率。
可选地,上述将每个基本块作为一个控制流图节点,并根据各控制流图节点生成控制流图,包括:
响应于对代码流程图的代码生成指令,将每个基本块作为一个控制流图节点,并根据各控制流图节点生成控制流图。
其中,代码生成指令,也即生成目标代码的触发指令。在一些实施例中,可以基于触摸屏、键盘、鼠标等输入设备作用于代码流程图的代码生成控件,以生成代码生成指令,响应于该代码生成指令,可以确定代码流程图中的各基本块,将每个基本块作为一个控制流图节点,并根据各基本块之间的关联关系以及各目标节点的属性信息,生成控制流图。
值得说明的是,在生成控制流图之后,则可以基于预设代码类型的语法规则,继续根据控制流图生成代码流程图对应的目标代码,实现一键生成控制流图和目标代码,可以提高用户的使用体验。
当然,在一些实施例中,控制流图和目标代码也可以通过多个生成指令生成,比如,响应于第一生成指令,可以将每个基本块作为一个控制流图节点,并根据各控制流图节点生成控制流图;响应于第二生成指令,基于预设代码类型的语法规则,可以根据控制流图生成代码流程图对应的目标代码,实现了可以根据用户的需求灵活选择生成控制流图和目标代码的时机,提高本申请方法的适用性。
当然,需要说明的是,在一些实施例中,所生成的控制流程可以在预设界面中显示,如此,可以便于用户对目标代码的语法结构作进一步地分析。
图5为本申请实施例提供的一种控制流图的示意图,如图5所示,该控制流图中可以包括6个基本块,该6个基本块可以包括11个节点,其中,节点1~4为第一基本块、节点5~6为第二基本块、节点10~11为第三基本块、节点7、8、9分别为第四、五、六基本块,从该控制流图中可以清楚地知晓各基本块之间的执行顺序。
此外,在一些实施例中,该控制流图中还可以包括各目标节点的缩进信息,如图5所示,节点1~4、9的缩进信息为0个字符、节点4-5的缩进信息为4个字符、节点10~11的缩进信息为4个字符、节点7的缩进信息为8个字符、节点8的缩进信息为12个字符。可以看出,通过该控制流图,用户可以直观地知晓各目标节点的缩进信息,以及各基本块的组成,便于用户从宏观上对目标代码的语法结构进行分析。值得说明的是,本申请实施例中为了简化显示,用数字1~11简化表示各节点,根据实际的应用场景,控制流图中还可以包括各节点的节点类型标识,本申请在此并不限定控制流图的显示内容,当然,也可以包括其他信息。
图6为本申请实施例提供的又一种代码生成方法的流程示意图。可选地,低代码平台被配置为包括多种节点模板,可选地,该多种节点模板可以包括:start节点、if节点、else节点、while节点、for节点、swich节点、case节点、break节点、end节点等,在此不作限定。可以理解的是,通过该多种节点模板的设置,可以满足不同场景下用户的定制化功能需求,提高本申请方法的适用性。如图6所示,上述基于低代码平台获取代码流程图,包括:
S601、响应于对多种节点模板中至少一种节点模板的选择操作,确定目标节点模板。
在一些实施例中,用户可以基于点击、长按、拖拽等触控方式作用于多种节点模板中至少一种节点模板,以生成针对该至少一种节点模板的选择操作,响应于该选择操作,可以确定该选择操作对应的节点模板为目标节点模板。可选地,目标节点模板的数量可以是3个、5个、10个等,在此不作限定,根据实际的应用场景可以有所不同。
S602、响应于对目标节点模板的编辑操作,生成目标节点。
可选地,对目标节点模板的编辑操作可以包括:拖拽、点击等。比如,可以通过拖拽操作,调整各目标节点模板之间的显示位置、可以通过点击操作对各目标节点模板中的具体参数进行修改,比如,对于if节点,可以将if节点中的参数由if(a>10)修改为if(a=10)。
当然,具体编辑方式并不以此为限,在一些实施例中,还可以对目标节点模板进行复制、粘贴、以及删除操作,使得根据实际的应用场景,可以对目标节点模板进行灵活修改。
S603、响应于对目标节点的编辑操作,生成代码流程图。
基于上述所生成的目标节点,则可以对该目标节点作进一步编辑,比如,可以根据预设功能逻辑,通过连线操作建立各目标节点之间的关联关系,使得在该关联关系下所生成的代码流程图可以符合预设功能逻辑。
值得说明的是,代码流程图中各基本块的确定,可以根据各目标节点的属性信息以及基本块的定义确定,其中,关于基本块的定义可参见前述的相关部分,在此不再赘述。
可选地,上述方法还包括:
响应于对目标代码的执行指令,执行目标代码并输出执行结果,执行结果用于指示目标代码是否成功执行。
其中,生成目标代码之后,可以基于触摸屏、键盘、鼠标等输入设备作用于针对目标代码的执行控件,以生成对该目标代码的执行指令,响应于该执行指令,可以对该目标代码进行编译,通过编译输出该目标代码的执行结果。
可选地,若执行结果指示目标代码未成功执行时,可以输出未成功执行的信息,在一些实施例中,未成功执行的信息可以包括:出错的节点类型标识、出错的代码行标识等,在此不作限定。
可选地,上述节点类型包括:顺序节点、选择节点、循环节点。其中,顺序节点,也即该节点之后的代码从前往后依次执行,不跳过任何一条语句,所有的语句都会被执行到,比如,start节点;选择节点,也即该节点会使得代码被分成多个部分,程序会根据特定条件(某个表达式的运算结果)来判断到底执行哪一部分,比如if、else节点;循环节点,也即该节点会使程序重复执行同一段代码,直到条件不再满足,或者遇到强行跳出语句,比如,while节点、for节点等,在此不作限定。
图7为本申请实施例提供的一种代码生成装置的功能模块示意图,该装置基本原理及产生的技术效果与前述对应的方法实施例相同,为简要描述,本实施例中未提及部分,可参考方法实施例中的相应内容。如图7所示,该代码生成装置100包括:
获取模块110,用于基于低代码平台获取代码流程图,所述代码流程图包括多个目标节点;
确定模块120,用于根据多个所述目标节点确定至少一个基本块,将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图,所述控制流图用于表征各所述基本块之间的关联关系以及各所述目标节点的属性信息,每个所述基本块包括至少一个目标节点;
生成模块130,用于基于预设代码类型的语法规则,根据所述控制流图生成所述代码流程图对应的目标代码,所述目标代码符合所述语法规则中的缩进规则。
在可选的实施方式中,所述生成模块130,具体用于根据所述控制流图生成所述代码流程图对应的初始代码;
基于所述预设代码类型的语法规则以及各目标节点的属性信息,获取所述初始代码中各目标节点的缩进信息;
根据所述初始代码和各所述目标节点的缩进信息,获取所述代码流程图对应的目标代码。
在可选的实施方式中,所述目标节点的属性信息包括节点类型标识,所述生成模块,具体用于基于预设代码类型的语法规则,根据所述控制流图获取各所述目标节点的节点类型标识;
基于各所述目标节点的节点类型标识,生成所述代码流程图对应的初始代码,所述初始代码标注有各所述目标节点的节点类型标识。
在可选的实施方式中,所述目标代码标注还有代码行标识,所述生成模块130,具体用于基于预设代码类型的语法规则,确定所述初始代码中的至少一个换行符,得到标注有代码行标识的初始代码;
根据所述标注有代码行标识的初始代码和各所述目标节点的缩进信息,生成所述代码流程图对应的目标代码。
在可选的实施方式中,所述确定模块120,具体用于响应于对所述代码流程图的代码生成指令,将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图。
在可选的实施方式中,所述低代码平台被配置为包括多种节点模板,所述获取模块110,用于响应于对多种节点模板中至少一种节点模板的选择操作,确定目标节点模板;
响应于对所述目标节点模板的编辑操作,生成所述目标节点;
响应于对所述目标节点的编辑操作,生成所述代码流程图。
在可选的实施方式中,所述生成模块130,还用于响应于对所述目标代码的执行指令,执行所述目标代码并输出执行结果,所述执行结果用于指示所述目标代码是否成功执行。
在可选的实施方式中,节点类型包括:顺序节点、选择节点、循环节点。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器,或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图8为本申请实施例提供的一种电子设备结构示意图,该电子设备可以是上述的代码生成装置。如图8所示,该电子设备可以包括:处理器210、存储介质220和总线230,存储介质220存储有处理器210可执行的机器可读指令,当电子设备运行时,处理器210与存储介质220之间通过总线230通信,处理器210执行机器可读指令,以执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
可选地,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (11)

1.一种代码生成方法,其特征在于,包括:
基于低代码平台获取代码流程图,所述代码流程图包括多个目标节点;
根据多个所述目标节点确定至少一个基本块,将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图,所述控制流图用于表征各所述基本块之间的关联关系以及各所述目标节点的属性信息,每个所述基本块包括至少一个目标节点;
基于预设代码类型的语法规则,根据所述控制流图生成所述代码流程图对应的目标代码,所述目标代码符合所述语法规则中的缩进规则。
2.根据权利要求1所述的方法,其特征在于,所述基于预设代码类型的语法规则,根据所述控制流图生成所述代码流程图对应的目标代码,包括:
根据所述控制流图生成所述代码流程图对应的初始代码;
基于所述预设代码类型的语法规则以及各目标节点的属性信息,获取所述初始代码中各目标节点的缩进信息;
根据所述初始代码和各所述目标节点的缩进信息,获取所述代码流程图对应的目标代码。
3.根据权利要求2所述的方法,其特征在于,所述目标节点的属性信息包括节点类型标识,所述根据所述控制流图生成所述代码流程图对应的初始代码,包括:
基于预设代码类型的语法规则,根据所述控制流图获取各所述目标节点的节点类型标识;
基于各所述目标节点的节点类型标识,生成所述代码流程图对应的初始代码,所述初始代码标注有各所述目标节点的节点类型标识。
4.根据权利要求2所述的方法,其特征在于,所述目标代码标注还有代码行标识,所述根据所述初始代码和各所述目标节点的缩进信息,获取所述代码流程图对应的目标代码,包括:
基于预设代码类型的语法规则,确定所述初始代码中的至少一个换行符,得到标注有代码行标识的初始代码;
根据所述标注有代码行标识的初始代码和各所述目标节点的缩进信息,生成所述代码流程图对应的目标代码。
5.根据权利要求1所述的方法,其特征在于,所述将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图,包括:
响应于对所述代码流程图的代码生成指令,将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图。
6.根据权利要求1所述的方法,其特征在于,所述低代码平台被配置为包括多种节点模板,所述基于低代码平台获取代码流程图,包括:
响应于对多种节点模板中至少一种节点模板的选择操作,确定目标节点模板;
响应于对所述目标节点模板的编辑操作,生成所述目标节点;
响应于对所述目标节点的编辑操作,生成所述代码流程图。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于对所述目标代码的执行指令,执行所述目标代码并输出执行结果,所述执行结果用于指示所述目标代码是否成功执行。
8.根据权利要求3所述的方法,其特征在于,节点类型包括:顺序节点、选择节点、循环节点。
9.一种代码生成装置,其特征在于,包括:
获取模块,用于基于低代码平台获取代码流程图,所述代码流程图包括多个目标节点;
确定模块,用于根据多个所述目标节点确定至少一个基本块,将每个所述基本块作为一个控制流图节点,并根据各所述控制流图节点生成控制流图,所述控制流图用于表征各所述基本块之间的关联关系以及各所述目标节点的属性信息,每个所述基本块包括至少一个目标节点;
生成模块,用于基于预设代码类型的语法规则,根据所述控制流图生成所述代码流程图对应的目标代码,所述目标代码符合所述语法规则中的缩进规则。
10.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1-8任一所述代码生成方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-8任一所述代码生成方法的步骤。
CN202211067869.9A 2022-09-01 2022-09-01 代码生成方法、装置、设备及介质 Pending CN115328494A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211067869.9A CN115328494A (zh) 2022-09-01 2022-09-01 代码生成方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211067869.9A CN115328494A (zh) 2022-09-01 2022-09-01 代码生成方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN115328494A true CN115328494A (zh) 2022-11-11

Family

ID=83930550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211067869.9A Pending CN115328494A (zh) 2022-09-01 2022-09-01 代码生成方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN115328494A (zh)

Similar Documents

Publication Publication Date Title
Tribastone et al. The PEPA eclipse plugin
WO2020204144A1 (ja) 業務分析方法
CN111124379B (zh) 页面生成方法、装置、电子设备及存储介质
CN109739494B (zh) 一种基于Tree-LSTM的API使用代码生成式推荐方法
EP1962185A2 (en) Condition editor for business process management and business activity monitoring
Angerer et al. Configuration-aware change impact analysis (t)
Jaafar et al. An exploratory study of macro co-changes
JP2012221380A (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
CN115639980A (zh) 一种低代码平台可拖拽的前端逻辑编排方法及装置
US9678856B2 (en) Annotated test interfaces
CN115048104A (zh) 基于语法树的代码生成方法及其装置、电子设备
CN114675875A (zh) 一种共享组件发布方法、装置、设备及介质
CN111143228B (zh) 基于决策表法的测试代码生成方法及装置
CN115469849B (zh) 一种业务处理系统、方法、电子设备和存储介质
CN115686515B (zh) 参数可视化配置界面生成方法、装置、介质和电子设备
Savic et al. Use case specification at different levels of abstraction
CN116755669A (zh) 一种基于dsl语言操作模型的低代码开发方法和工具
CN115328494A (zh) 代码生成方法、装置、设备及介质
CN111126012B (zh) 定制生成表达式方法及装置
Le Zou et al. On synchronizing with web service evolution
Lu et al. DATAM: A model‐based tool for dependability analysis
Császár et al. Interactive call graph generation for software projects
Fill Semantic evaluation of business processes using SeMFIS
Dssouli et al. A service creation environment based on scenarios
Rippon Learn React with TypeScript 3: Beginner's guide to modern React web development with TypeScript 3

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