CN115454414B - 一种代码处理方法、装置及计算机可读存储介质 - Google Patents
一种代码处理方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115454414B CN115454414B CN202211401707.4A CN202211401707A CN115454414B CN 115454414 B CN115454414 B CN 115454414B CN 202211401707 A CN202211401707 A CN 202211401707A CN 115454414 B CN115454414 B CN 115454414B
- Authority
- CN
- China
- Prior art keywords
- code
- data
- graphic
- text
- complete
- 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
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/34—Graphical or visual programming
-
- 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/33—Intelligent editors
-
- 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
-
- 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/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- 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
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Document Processing Apparatus (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例涉及一种代码处理方法,首先对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据;然后在第一图形元数据中插入隐数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构。并且如果利用图形化编程工具对第一完整代码文本数据对应的代码语义结构进行编辑后,所生成的第二代码图形数据中仍会保留所插入的隐数据,从而可实现图形化编程与文本编程的双向转换,进一步使得图形化编程工具能够应用到整个开发流程中,充分发挥其直观可控的优势,有效提高程序开发效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种代码处理方法、装置及计算机可读存储介质。
背景技术
由于使用文本编程具有较高的专业性要求,为辅助特定领域的程序设计或非专业编程人员(如领域专家)进行程序设计,目前已出现了多种图形化编程工具。在使用现有的图形化编程工具时,程序员利用图形化编程工具生成代码框架后,有可能需要进行人工修整才能得到最终的文本代码,但是进行人工修整后的文本代码不能再被导回至图形化编程工具中,无法实现在图形化编程工具中的再次编辑。因此现有技术中存在图形化编程与文本编程的双向转换困难的技术问题,使得图形化编程工具的应用受到了很大的限制。
发明内容
有鉴于此,本申请实施例所解决的技术问题之一在于提供一种代码处理方法、装置及计算机可读存储介质,用以克服现有技术中图形化编程与文本编程的双向转换困难的问题。
本申请实施例第一方面公开一种代码处理方法,包括:
对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据;其中,所述第一代码文本数据用于以文本形式记录和显示第一完整代码;所述第一图形元数据用于记录所述第一完整代码对应的代码语义结构;所述隐数据用于记录所述第一完整代码对应的代码表达形式;
在所述第一图形元数据中插入所述隐数据,获得第一代码图形数据,以使得可利用所述第一代码图形数据以图形化的形式记录和显示所述第一完整代码对应的所述代码语义结构。
本申请实施例第二方面公开一种代码处理装置,包括:
语法分析模块,用于对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据;其中,所述第一代码文本数据用于以文本形式记录和显示第一完整代码;所述第一图形元数据用于记录所述第一完整代码对应的代码语义结构;所述隐数据用于记录所述第一完整代码对应的代码表达形式;
图形转换模块,用于在所述第一图形元数据中插入所述隐数据,获得第一代码图形数据,以使得可利用所述第一代码图形数据以图形化的形式记录和显示所述第一完整代码对应的所述代码语义结构。
本申请实施例第三方面公开一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序包括用于执行前述代码处理方法的部分或全部步骤。
与现有技术相比,本申请实施例首先对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据;然后在第一图形元数据中插入隐数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构。并且如果利用图形化编程工具对第一完整代码文本数据对应的代码语义结构进行编辑后,所生成的第二代码图形数据中仍会保留所插入的隐数据,从而可实现图形化编程与文本编程的双向转换,进一步使得图形化编程工具能够应用到整个开发流程中,充分发挥其直观可控的优势,有效提高程序开发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一公开的一种代码处理方法的流程示意图;
图2是本申请实施例二公开的一种代码处理方法的流程示意图;
图3是本申请实施例三公开的一种代码处理方法的流程示意图;
图4是本申请实施例四公开的一种代码处理方法的流程示意图;
图5是本申请实施例五公开的一种代码处理装置的结构示意框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同的对象,而不是用于描述特定顺序。本申请实施例的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
如图1所示,图1为本申请实施例一公开的一种代码处理方法的示意性流程图,该代码处理方法主要用于嵌入式语言环境中,包括:
步骤S101,对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据。
本实施例中,第一代码文本数据用于以文本形式记录和显示第一完整代码,即用户通过文本编程工具读取第一代码文本数据后,可以查看第一完整代码的代码文本。其中,第一完整代码的编程语言不限,例如,可以是C、JavaScript、Python、Lua等多种命令式语言中的至少一种。第一完整代码的生成方式也不限,例如,第一完整代码可以是全部由程序员自行编写的代码,也可以是程序员对机器自动生成的代码进行改写后的代码,还可以是由机器自动生成的代码。
本实施例中,可利用预设的语法分析算法对第一代码文本数据进行语法分析处理,具体所采用的语法分析算法不限,可根据实际应用需求进行合理选择。其中,可根据第一完整代码的编程语言的语法规则,设置相应的分析算法。
本实施例中,第一图形元数据用于记录第一完整代码对应的代码语义结构,该对代码语义结构的记录方式不限,可根据实际应用需求进行合理选择。
本实施例中,隐数据用于记录第一完整代码对应的代码表达形式,代码表达形式是指在代码文本中的形式表达,用于标识程序员的意图表达或者表达习惯。例如,对于代码中使用到一个常数,可以有“65535”、“0xFFFF”、“0x0000FFFF”、“(1 << 16) – 1”等多种同义表达方式,不同的程序员可能会选用不同的表达方式,为了对第一完整代码对应的代码表达形式相关信息在后续生成的第一代码图形数据中保留,可以通过对第一代码文本数据进行语法分析处理后生成隐数据进行记录。其中,所采用的分析算法以及对代码表达形式的记录方式不限,可根据实际应用需求进行合理选择。
可选地,为了有效且合理地标识程序员的意图表达或者表达习惯,并且将后续生成的第一代码图形数据再转换成文本形式的完整代码时还可予以保留相关信息,可优选代码表达形式包括注释、字面常量、函数形式参数名称、常量表达式中的至少一种。
其中,注释可包括块注释、行尾注释和行内注释中的至少一种,实际应用中可根据第一完整代码的编程语言所确定。例如,纯粹从句法上来说Lua语言不存在行内注释,但JavaScript等语言存在行内注释。
块注释主要特征是单独成行,从语法上看,块注释的代码行内除空白外没有其它词汇,但是会与位于该代码行之前或者之后的语句关联。例如,当某一块注释的代码行的上一行存在空白行,但是下一行不存在空白行的话,则会认为该块注释是程序员针对其后方的代码块进行的注释;当某一块注释的代码行的上一行不存在空白行,但是下一行存在空白行的话,则会认为该块注释是程序员针对其前方的代码块进行的注释。
行尾注释和行内注释的区别在于,行尾注释的位于一个完整语句行的尾部,行内注释位于一个完整语句行的中部。
其中,字面常量具有多种表达方式,根据其应用目的所确定。例如,整数能以十进制、八进制、十六进制等多种进制表达,当用作文件权限时,程序员惯例使用八进制编写,为了根据后续生成的第一代码图形数据获得可读性较好的文本形式的完整代码,可以将八进制表达的信息通过隐数据进行记录。又例如,虽然Lua语言中字符串’”a string”’与”\”astring\””是等同的,但是可读性存在明显差异,因此也可以将可读性更好的方式相关信息通过隐数据进行记录。
其中,虽然函数形式参数名称的变化不影响语义,并不影响程序逻辑,在文本编程过程中的影响很小,但是在图形化编程过程中,函数形式参数名称往往较为死板,故为了根据后续生成的第一代码图形数据再转换获得第二代码文本数据时,相关信息不丢失,可优选将函数形式参数作为需要保留的隐数据,即从第一完整代码中提取并保留函数形式参数。
其中,常量表达式通常会包括程序员在程序设计中的思考逻辑,为了将后续生成的第一代码图形数据再转换获得第二代码文本数据时,可以保留程序员可能留下的思考逻辑相关信息,也可以将常量表达式提取出作为需要保留的隐数据。
例如,第一完整代码中若包括代码“local a = 4 * 1024 * 1024”,在生成的第一图形元数据中可能会将其合并简化为“local a = 4194304”,虽然对计算机而言更友好,但是将后续生成的第一代码图形数据再转换成第二代码文本数据时,程序员人工阅读时更希望看到“local a = 4 * 1024 * 1024”,故为了提高程序员的人工阅读体验,可以将相关常量表达式提取出作为需要保留的隐数据。
可选地,为了合理且高效的提取出第一图形元数据和隐数据,步骤S101还可包括子步骤A1-A3:
子步骤A1,对第一代码文本数据进行分词处理,获得词汇流数据和第一表达形式子数据。
其中,所采用的分词处理方式不限,可根据实际应用需求进行合理设置。第一表达形式子数据用于记录第一完整代码对应的部分代码表达形式,如前述,由于代码表达形式可以包括注释、字面常量、函数形式参数名称、常量表达式中的至少一种,进行分词处理可以获得字面常量和/或常量表达式相关的数据。
子步骤A2,根据第一完整代码对应的语法规则,对词汇流数据进行语法识别处理,获得抽象语法树数据和第二表达形式子数据。
其中,本步骤中是根据第一完整代码对应的编程语言的语法规则,将词汇流数据识别为抽象语法树数据,具体的语法规则不限,可根据实际应用需求进行合理设置。第二表达形式子数据也于记录第一完整代码对应的部分代码表达形式,并且与第二表达形式子数据所记录的代码表达形式不同。
子步骤A3,根据第一完整代码对应的语法规则和抽象语法树数据,构造第一完整代码对应的代码语义结构并生成第一图形元数据,以及根据第一表达形式子数据和第二表达形式子数据,生成隐数据。
步骤S102,在第一图形元数据中插入隐数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构。
本实施例中,程序员利用图形化编程工具读取第一代码图形数据后,可以查看第一完整代码文本数据对应的代码语义结构,并且还可进一步对其进行编辑,实现图形化编程。其中,利用第一代码图形数据对第一完整代码对应的代码语义结构的记录和显示方式不限,在实际应用过程中可根据所选取的图形化编程工具所确定。例如,可以显示不同样式的流程图,可以以二维或者三维图形的方式进行显示。为了降低数据处理难度,优选以二维图形显示第一完整代码对应的代码语义结构。
本实施例中,第一代码图形数据中包括隐数据,但是图形化编程工具读取第一代码图形数据后并不会显示隐数据,故不会影响第一完整代码对应的代码语义结构的显示效果。并且如果利用图形化编程工具对第一完整代码文本数据对应的代码语义结构进行编辑后,所生成的第二代码图形数据中仍会保留所插入的隐数据,后续将第二代码图形数据再转换成第二代码文本数据时,第二代码文本数据所记录和显示的第二完整代码仍会包括隐数据所记录的代码表达形式,从而可实现图形化编程与文本编程的双向无损转换。
可选地,为了提高图形化编程与文本编程的双向转换效果,可以在第一图形元数据的特定位置处插入隐数据,即步骤S101和步骤S102还可分别包括子步骤B1和B2:
子步骤B1,对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据,以及隐数据在第一图形元数据中的插入位置信息。
其中,如前述,隐数据记录的代码表达形式可能会有一种或者多种,并且同一种代码表达形式也可能在第一完整代码中的不同位置处出现,因此为了将后续生成的第一代码图形数据再转换成第二代码文本数据时,可以在相应的位置处对代码表达形式进行记录及恢复。即隐数据也可以被认为是一个由多个子数据组成数据集,每个子数据用于记录第一完整代码中一个位置处的代码表达形式,在对第一代码文本数据进行语法分析处理时,会确定出每个子数据在第一图形元数据中对应的插入位置。
例如,如果分析确定某一块注释是程序员针对其前方的代码块进行的注释,则可以将隐数据中与该块注释对应的部分数据的插入位置确定为在其前方代码块的后方。
又例如,对于行内注释而言,由于行内注释一般关联到前方的词汇,因此可以将隐数据中与某一行内注释对应的部分数据的插入位置确定为在其关联词汇的后方。
子步骤B2,根据插入位置信息在第一图形元数据中插入隐数据,获得第一代码图形数据。
其中,如前述,本步骤中提及的插入隐数据并非是在每个插入位置处均插入相同的数据,而是根据第一完整代码中各个代码表达形式所在的位置,将各个代表表达形式对应部分的隐数据进行插入,即是将构成隐数据的每个子数据在第一图形元数据中对应的插入位置中插入或者替换。
由以上本申请实施例可见,本申请实施例首先对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据;然后在第一图形元数据中插入隐数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构。并且如果利用图形化编程工具对第一完整代码文本数据对应的代码语义结构进行编辑后,所生成的第二代码图形数据中仍会保留所插入的隐数据,从而可实现图形化编程与文本编程的双向转换,进一步使得图形化编程工具能够应用到整个开发流程中,充分发挥其直观可控的优势,有效提高程序开发效率。
实施例二
如图2所示,图2为本申请实施例二公开的一种代码处理方法的示意性流程图,该代码处理方法包括:
步骤S201,对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据。
本实施例中,步骤S201与前述实施例一中的步骤S101基本相同或相似,在此不再赘述。
步骤S202,在第一图形元数据中插入隐数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构。
本实施例中,步骤S202与前述实施例一中的步骤S102基本相同或相似,在此不再赘述。
步骤S203,获得第二代码图形数据。
本实施例中,第二代码图形数据至少用于以图形化的形式记录和显示第二完整代码对应的代码框架结构,可以与第一代码图形数据相同,也可以与第一代码图形数据不同。
例如,程序员利用图形化编程工具读取第一代码图形数据后,如果未进行任何编辑并保存,即第二代码图形数据所记录的代码框架结构与第一代码图形数据所记录的代码语义结构相同,则实际上第二代码图形数据与第一代码图形数据相同;如果程序员对第一代码图形数据所记录的代码语义结构进行了编辑并保存,即第二代码图形数据所记录的代码框架结构与第一代码图形数据所记录的代码语义结构不同,则第二代码图形数据与第一代码图形数据不同。
步骤S204,对第二代码图形数据进行拆分处理,获得第二图形元数据和隐数据。
本实施例中,可利用预设的拆分处理算法对第二代码图形数据进行拆分处理,所获得的第二图形元数据用于记录第二完整代码对应的代码框架结构,具体所采用的拆分处理算法以及第二图形元数据的具体记录方式不限,可根据实际应用需求进行合理选择。例如,第二图形元数据可以是第二代码图形数据中直接拆分出的一部分,比如不包括隐数据的部分,后续还可在图形化工具中利用其显示代码框架结构;也可以是对直接拆分出的一部分进行相应处理后获得,比如处理之后仅用于记录代码框架结构,而不能在图形化工具中利用其显示代码框架结构。
本实施例中,由于程序员利用图形化编程工具读取第一代码图形数据后,并不会显示隐数据供程序员进行编辑,因此对第二代码图形数据进行拆分处理后,隐数据实际上并未发生变化,即仍是通过对第一代码文本数据进行语法分析处理所获得的隐数据。
步骤S205,根据第二图形元数据和隐数据,获得第二代码文本数据,以使得可利用第二代码文本数据以文本的形式记录和显示第二完整代码。
本实施例中,由于隐数据记录了第一完整代码对应的代码表达形式,第二图形元数据记录了第二完整代码对应的代码框架结构,对两者进行相应的处理后可确定出第二完整代码,并可利用第二代码文本数据以文本的形式记录和显示。后续程序员利用文本编程工具读取第二代码文本数据后,可以查看以文本形式记录和显示的第二完整代码,从中不仅可以看到第二代码图形数据对应的代码框架结构,而且还可以在特定的插入位置处看到相应的代码表达形式。
本实施例中,利用文本编程工具还可对第二完整代码进行编辑修改,所获得的修改后的数据可以作为第一代码文本数据再次执行本实施例步骤S201,从而可实现图形化编程与文本编程的双向转换,在实际应用中,程序员可以自由选择采用图形化编程或者文本编程,有利于提高工作效率。
可选地,为了合理且有效的生成第二代码文本数据,步骤S205还可包括下述子步骤C1和C2:
子步骤C1,对第二图形元数据进行变换处理,获得文本框架数据。
其中,文本框架数据用于记录第二完整代码对应的文本形式的代码框架结构。对第二图形元数据进行变换处理的工具或者算法不限,例如,可以是传统图形化编程工具的代码生成器。
子步骤C2,利用隐数据对文本框架数据进行修饰处理,获得第二代码文本数据。
其中,主要是根据隐数据对第二完整代码对应的代码框架文本结构进行修饰。例如,对于代码中使用到一个常数,可以有“65535”、“0xFFFF”、“0x0000FFFF”、“(1 << 16) –1”等多种同义表达方式,在第一完整代码中使用的形式为“0x0000FFFF”的话,则利用隐数据对文本框架数据进行修饰处理后,该常数可被恢复为“0x0000FFFF”。
由以上本申请实施例可见,本申请实施例利用对第二代码图形数据进行拆分处理获得的第二图形元数据和隐数据,生成第二代码文本数据,以使得可利用第二代码文本数据以文本的形式记录和显示第二完整代码。实现了图形化编程与文本编程的双向转换,可将图形化编程应用于软件开发的全过程,有利于提高生产力。
实施例三
如图3所示,图3为本申请实施例三公开的一种代码处理方法的示意性流程图,该代码处理方法包括:
步骤S301,对第一代码文本数据进行语法分析处理,获得隐数据、宽容数据和第一图形元数据。
本实施例中,步骤S301中对第一代码文本数据进行语法分析处理获得隐数据和第一图形元数据的方式与前述实施例一中的S101基本相同或者相似,在此不再赘述。
本实施例中,由于程序员利用文本编程工具编程时可能会编写出存在语法缺陷的缺陷代码,这部分代码难以确定出对应的代码语义结构,如果将第一代码文本数据转换成第一代码图形数据时将这部分代码删除的话,则后续利用图形化编程工具对第一代码图形数据进行修改后,无法再利用修改后的数据将这部分代码以文本形式进行恢复和显示,使得图形化编程与文本编程实现不了无损双向转换。因此可以利用预设语法分析算法,根据第一代码文本数据获得宽容数据,并将宽容数据也插入至第一图形元数据中。
其中,宽容数据用于记录第一完整代码中存在语法缺陷的缺陷代码,具体记录方式不限,可根据实际应用需求进行合理选择。但是需要注意的是,所选用的语法分析算法需要具有良好的错误恢复识别能力,能够尽可能准确地识别出缺陷代码在第一完整代码中的起点位置和终点位置。
可选地,在对第一代码文本数据进行语法分析处理时,可针对所采用的编程语言指定一族可支持的扫描状态机,以匹配到一个状态机入口作为恢复点,该恢复点位于缺陷代码在第一完整代码中的终点位置之后。
可选地,为了合理且高效的提取出第一图形元数据、隐数据和宽容数据,步骤S301中提取宽容数据的方法包括下述子步骤D1-D3:
子步骤D1,对第一代码文本数据进行分词处理,获得词汇流数据和第一表达形式子数据。
其中,子步骤D1与前述实施例一中的子步骤A1基本相同或者相似,在此不再赘述。
子步骤D2,根据第一完整代码对应的语法规则,对词汇流数据进行语法识别处理,获得抽象语法树数据、第二表达形式子数据和宽容数据。
其中,子步骤D2与前述实施例一中的子步骤A2相比,区别主要在于进行语法识别处理时,还会识别出第一完整代码中存在语法缺陷的缺陷代码及其所在位置,并生成宽容数据。
子步骤D3,根据第一完整代码对应的语法规则和抽象语法树数据,构造第一完整代码对应的代码语义结构并生成第一图形元数据,以及根据第一表达形式子数据和第二表达形式子数据,生成隐数据。
其中,子步骤D3与前述实施例一中的子步骤A3基本相同或者相似,在此不再赘述。
步骤S302,在第一图形元数据中插入隐数据和宽容数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构和缺陷代码。
本实施例中,步骤S302中在第一图形元数据中插入隐数据的方法与前述实施例一中的步骤S101基本相同或者相似,在此不再赘述。
本实施例中,在第一图形元数据中插入宽容数据的方法与插入隐数据的方法较为类似,即在确定出缺陷代码在第一完整代码中的起点位置和终点位置后,可以据此确定出宽容数据在第一图形元数据中的插入位置信息,并将其插入第一图形元数据中。
本实施例中,由于第一代码图形数据中包括宽容数据,第一代码图形数据还以用于图形化的形式记录和显示第一完整代码对应的缺陷代码,以使得程序员利用图形化编程工具读取第一代码图形数据后,可以较易查找及查看到第一完整代码中存在语法缺陷的缺陷代码,利用图形化编程工具相应的功能对其进行修改或者删除,获得更好的操作体验。
由以上本申请实施例可见,本申请实施例三与实施例一相比,在对应的步骤中增加了宽容数据,使得即便第一完整代码中存在缺陷代码,图形化编程与文本编程依然可以实现无损双向转换,并且利用图形化编程工具还可对缺陷代码进行删除处理,有利于提高程序员的编程体验。
实施例四
如图4所示,图4为本申请实施例四公开的一种代码处理方法的示意性流程图,该代码处理方法包括:
步骤S401,对第一代码文本数据进行语法分析处理,获得隐数据、宽容数据和第一图形元数据。
本实施例中,步骤S401与前述实施例三中的步骤S301基本相同或者相似,在此不再赘述。
步骤S402,在第一图形元数据中插入隐数据和宽容数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构和缺陷代码。
本实施例中,步骤S402与前述实施例三中的步骤S302基本相同或者相似,在此不再赘述。
步骤S403,获得第二代码图形数据。
本实施例中,步骤S403与前述实施例二中的步骤S203基本相同或者相似,在此不再赘述。
步骤S404,对第二代码图形数据进行拆分处理,获得第二图形元数据、隐数据和宽容数据。
本实施例中,步骤S404与前述实施例二中的步骤S204相似,区别主要在于还可进一步拆分出宽容数据,在此不再赘述。
步骤S405,根据第二图形元数据、隐数据和宽容数据,获得第二代码文本数据,以使得可利用第二代码文本数据以文本的形式记录和显示代码框架结构对应的第二完整代码。
本实施例中,步骤S405与前述实施例二中的步骤S205相似,区别主要在于在第二代码文本数据中还会包括宽容数据,在此不再赘述。
可选地,为了合理且有效的生成第二代码文本数据,步骤S405还可包括下述子步骤E1和E2:
子步骤E1,对第二图形元数据进行变换处理,获得文本框架数据。
其中,子步骤E1与前述实施例二中的子步骤C1基本相同或者相似,在此不再赘述。
子步骤E2,利用隐数据对文本框架数据进行修饰处理,以及将宽容数据插入文本框架数据,获得第二代码文本数据。
其中,子步骤E2中利用隐数据对文本框架数据进行修饰处理的方法与前述实施例二中的子步骤C1基本相同或者相似,在此不再赘述。
将宽容数据插入文本框架数据中主要是将在步骤S401中提取的缺陷代码文本插入第二完整代码对应的代码框架结构文本中,并保留缺陷代码的文本原貌。如果第二代码图形数据中不包括宽容数据的话,即利用图形化编程工具对第一代码图形数据进行编辑时,删除了部分宽容数据,则本步骤中无需再将已删除的部分宽容数据插入文本框架数据。
由以上本申请实施例可见,本申请实施例利用对第二代码图形数据进行拆分处理获得的第二图形元数据、隐数据和宽容数据,生成第二代码文本数据,以使得可利用第二代码文本数据以文本的形式记录和显示代码框架结构对应的第二完整代码。实现了图形化编程与文本编程的无损双向转换,在实际应用中可以综合两种编程方式之长,而规避两种编程方式之短,将图形化编程应用于软件开发的全过程,有利于提高生产力。
实施例五
本申请实施例五提供一种代码处理装置,图5为本申请实施例五公开的一种代码处理装置的结构示意图,该装置包括:
语法分析模块501,用于对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据;其中,第一代码文本数据用于以文本形式记录和显示第一完整代码;第一图形元数据用于记录第一完整代码对应的代码语义结构;隐数据用于记录第一完整代码对应的代码表达形式。
图形转换模块502,用于在第一图形元数据中插入隐数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构。
可选地,语法分析模块501还用于对第一代码文本数据进行语法分析处理,获得隐数据、第一图形元数据和宽容数据;其中,宽容数据用于记录第一完整代码中存在语法缺陷的缺陷代码。
图形转换模块502还用于在第一图形元数据中插入隐数据和宽容数据,获得第一代码图形数据,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构和缺陷代码。
可选地,该装置还包括获得模块,用于获得第二代码图形数据;其中,第二代码图形数据至少用于以图形化的形式记录和显示第二完整代码对应的代码框架结构。
拆分模块,用于对第二代码图形数据进行拆分处理,获得第二图形元数据和隐数据;其中,第二图形元数据用于记录第二完整代码对应的代码框架结构。
文本转换模块,用于根据第二图形元数据和隐数据,获得第二代码文本数据,以使得可利用第二代码文本数据以文本的形式记录和显示第二完整代码。
可选地,文本转换模块包括第一变换处理单元,用于对第二图形元数据进行变换处理,获得文本框架数据。
第一修饰处理单元,用于利用隐数据对文本框架数据进行修饰处理,获得第二代码文本数据。
可选地,拆分模块还用于对第二代码图形数据进行拆分处理,获得第二图形元数据、隐数据和宽容数据。
文本转换模块还用于根据第二图形元数据、隐数据和宽容数据,获得第二代码文本数据。
可选地,文本转换模块包括第二变换处理单元,用于对第二图形元数据进行变换处理,获得文本框架数据。
第二修饰处理单元,用于利用隐数据对文本框架数据进行修饰处理,以及将宽容数据插入文本框架数据,获得第二代码文本数据。
可选地,语法分析模块501包括分词处理单元、语法识别单元和构造单元,其中:
分词处理单元,用于对第一代码文本数据进行分词处理,获得词汇流数据和第一表达形式子数据;
语法识别单元,用于根据第一完整代码对应的语法规则,对词汇流数据进行语法识别处理,获得抽象语法树数据和第二表达形式子数据;
构造单元,用于根据第一完整代码对应的语法规则和抽象语法树数据,构造第一完整代码对应的代码语义结构并生成第一图形元数据,以及根据第一表达形式子数据和第二表达形式子数据,生成隐数据。
其中,第一表达形式子数据和第二表达形式子数据均用于记录第一完整代码对应的部分代码表达形式。
可选地,语法识别单元还用于根据第一完整代码对应的语法规则,对词汇流数据进行语法识别处理,获得抽象语法树数据、第二表达形式子数据和宽容数据;其中,宽容数据用于记录第一完整代码中存在语法缺陷的缺陷代码。
通过本实施例的代码处理装置,可以实现前述多个方法实施例中相应的代码处理方法,并具有相应方法实施例的有益效果,在此不再赘述。
实施例六
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有用于执行前述多个方法实施例中相应的方法的计算机程序。具体的,计算机程序包括:
用于对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据的指令;其中,第一代码文本数据用于以文本形式记录和显示第一完整代码;第一图形元数据用于记录第一完整代码对应的代码语义结构;隐数据用于记录第一完整代码对应的代码表达形式。
用于在第一图形元数据中插入隐数据,获得第一代码图形数据的指令,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构。
可选地,还包括用于对第一代码文本数据进行语法分析处理,获得隐数据、第一图形元数据和宽容数据的指令;其中,宽容数据用于记录第一完整代码中存在语法缺陷的缺陷代码。
用于在第一图形元数据中插入隐数据和宽容数据,获得第一代码图形数据的指令,以使得可利用第一代码图形数据以图形化的形式记录和显示第一完整代码对应的代码语义结构和缺陷代码。
可选地,还包括用于获得第二代码图形数据的指令;其中,第二代码图形数据至少用于以图形化的形式记录和显示第二完整代码对应的代码框架结构。
用于对第二代码图形数据进行拆分处理,获得第二图形元数据和隐数据的指令;其中,第二图形元数据用于记录第二完整代码对应的代码框架结构。
用于根据第二图形元数据和隐数据,获得第二代码文本数据的指令,以使得可利用第二代码文本数据以文本的形式记录和显示第二完整代码。
可选地,根据第二图形元数据和隐数据,获得第二代码文本数据包括:
对第二图形元数据进行变换处理,获得文本框架数据;
利用隐数据对文本框架数据进行修饰处理,获得第二代码文本数据。
可选地,对第二代码图形数据进行拆分处理,获得第二图形元数据和隐数据包括:
对第二代码图形数据进行拆分处理,获得第二图形元数据、隐数据和宽容数据;
对应地,根据第二图形元数据和隐数据,获得第二代码文本数据包括:
根据第二图形元数据、隐数据和宽容数据,获得第二代码文本数据。
可选地,根据第二图形元数据、隐数据和宽容数据,获得第二代码文本数据包括:
对第二图形元数据进行变换处理,获得文本框架数据;
利用隐数据对文本框架数据进行修饰处理,以及将宽容数据插入文本框架数据,获得第二代码文本数据。
可选地,对第一代码文本数据进行语法分析处理,获得隐数据和第一图形元数据包括:
对第一代码文本数据进行分词处理,获得词汇流数据和第一表达形式子数据;
根据第一完整代码对应的语法规则,对词汇流数据进行语法识别处理,获得抽象语法树数据和第二表达形式子数据;
根据第一完整代码对应的语法规则和抽象语法树数据,构造第一完整代码对应的代码语义结构并生成第一图形元数据,以及根据第一表达形式子数据和第二表达形式子数据,生成隐数据;
其中,第一表达形式子数据和第二表达形式子数据均用于记录第一完整代码对应的部分代码表达形式。
可选地,根据第一完整代码对应的语法规则,对词汇流数据进行语法识别处理,获得抽象语法树数据和第二表达形式子数据包括:根据第一完整代码对应的语法规则,对词汇流数据进行语法识别处理,获得抽象语法树数据、第二表达形式子数据和宽容数据;其中,宽容数据用于记录第一完整代码中存在语法缺陷的缺陷代码。
通过本实施例的计算机可读存储介质,可以实现前述多个方法实施例中相应的代码处理方法,并具有相应方法实施例的有益效果,在此不再赘述。
至此,已经对本申请的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作可以按照不同的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序,以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。
本申请是参照根据本申请实施例的方法的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、装置或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (6)
1.一种代码处理方法,其特征在于,所述方法包括:
对第一代码文本数据进行语法分析处理,获得隐数据、第一图形元数据和宽容数据;其中,所述第一代码文本数据用于以文本形式记录和显示第一完整代码;所述第一图形元数据用于记录所述第一完整代码对应的代码语义结构;所述隐数据用于记录所述第一完整代码对应的代码表达形式;所述宽容数据用于记录所述第一完整代码中存在语法缺陷的缺陷代码;
在所述第一图形元数据中插入所述隐数据和所述宽容数据,获得第一代码图形数据,以使得可利用所述第一代码图形数据以图形化的形式记录和显示所述第一完整代码对应的所述代码语义结构和所述缺陷代码;
获得第二代码图形数据;其中,所述第二代码图形数据是利用图形化编程工具对所述第一完整代码文本数据对应的代码语义结构进行编辑获得,所述第二代码图形数据至少用于以图形化的形式记录和显示第二完整代码对应的代码框架结构;
对所述第二代码图形数据进行拆分处理,获得第二图形元数据、所述隐数据和所述宽容数据;其中,所述第二图形元数据用于记录所述第二完整代码对应的代码框架结构;
根据所述第二图形元数据、所述隐数据和所述宽容数据,获得第二代码文本数据,以使得可利用所述第二代码文本数据以文本的形式记录和显示所述第二完整代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第二图形元数据、所述隐数据和所述宽容数据,获得所述第二代码文本数据包括:
对所述第二图形元数据进行变换处理,获得文本框架数据;
利用所述隐数据对所述文本框架数据进行修饰处理,以及将所述宽容数据插入所述文本框架数据,获得所述第二代码文本数据。
3.根据权利要求1所述的方法,其特征在于,所述对第一代码文本数据进行语法分析处理,获得隐数据、第一图形元数据和宽容数据包括:
对所述第一代码文本数据进行分词处理,获得词汇流数据和第一表达形式子数据;
根据所述第一完整代码对应的语法规则,对所述词汇流数据进行语法识别处理,获得抽象语法树数据和第二表达形式子数据;
根据所述第一完整代码对应的语法规则和所述抽象语法树数据,构造所述第一完整代码对应的代码语义结构并生成所述第一图形元数据,以及根据所述第一表达形式子数据和所述第二表达形式子数据,生成所述隐数据;
其中,所述第一表达形式子数据和所述第二表达形式子数据均用于记录所述第一完整代码对应的部分代码表达形式。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一完整代码对应的语法规则,对所述词汇流数据进行语法识别处理,获得抽象语法树数据和第二表达形式子数据包括:
根据所述第一完整代码对应的语法规则,对所述词汇流数据进行语法识别处理,获得所述抽象语法树数据、所述第二表达形式子数据和宽容数据;其中,所述宽容数据用于记录所述第一完整代码中存在语法缺陷的缺陷代码。
5.一种代码处理装置,其特征在于,包括:
语法分析模块,对第一代码文本数据进行语法分析处理,获得隐数据、第一图形元数据和宽容数据;其中,所述第一代码文本数据用于以文本形式记录和显示第一完整代码;所述第一图形元数据用于记录所述第一完整代码对应的代码语义结构;所述隐数据用于记录所述第一完整代码对应的代码表达形式;所述宽容数据用于记录所述第一完整代码中存在语法缺陷的缺陷代码;
图形转换模块,用于在所述第一图形元数据中插入所述隐数据和所述宽容数据,获得第一代码图形数据,以使得可利用所述第一代码图形数据以图形化的形式记录和显示所述第一完整代码对应的所述代码语义结构和所述缺陷代码;
获得模块,用于获得第二代码图形数据;其中,所述第二代码图形数据是利用图形化编程工具对所述第一完整代码文本数据对应的代码语义结构进行编辑获得,所述第二代码图形数据至少用于以图形化的形式记录和显示第二完整代码对应的代码框架结构;
拆分模块,用于对所述第二代码图形数据进行拆分处理,获得第二图形元数据、所述隐数据和所述宽容数据;其中,所述第二图形元数据用于记录所述第二完整代码对应的代码框架结构;
文本转换模块,用于根据所述第二图形元数据、所述隐数据和所述宽容数据,获得第二代码文本数据,以使得可利用所述第二代码文本数据以文本的形式记录和显示所述第二完整代码。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序用于执行权利要求1-4中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211401707.4A CN115454414B (zh) | 2022-11-10 | 2022-11-10 | 一种代码处理方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211401707.4A CN115454414B (zh) | 2022-11-10 | 2022-11-10 | 一种代码处理方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115454414A CN115454414A (zh) | 2022-12-09 |
CN115454414B true CN115454414B (zh) | 2023-03-24 |
Family
ID=84295768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211401707.4A Active CN115454414B (zh) | 2022-11-10 | 2022-11-10 | 一种代码处理方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454414B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768564A (en) * | 1994-10-07 | 1998-06-16 | Tandem Computers Incorporated | Method and apparatus for translating source code from one high-level computer language to another |
US7975233B2 (en) * | 2006-07-24 | 2011-07-05 | National Instruments Corporation | Automatic conversion of a textual language into a graphical program representation |
CN109634592A (zh) * | 2018-12-29 | 2019-04-16 | 深圳点猫科技有限公司 | 图形化Python编程交互方法、系统及电子设备 |
EP4006662A4 (en) * | 2019-08-27 | 2023-04-12 | Siemens Aktiengesellschaft | SYSTEM AND METHODS TO SUPPORT GRAPHIC PROGRAMMING BASED ON NEURON BLOCKS AND STORAGE MEDIA |
CN113238746A (zh) * | 2021-05-11 | 2021-08-10 | 上海节卡机器人科技有限公司 | 一种混合编程控制方法、装置、设备及存储介质 |
-
2022
- 2022-11-10 CN CN202211401707.4A patent/CN115454414B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115454414A (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5341469A (en) | Structured text system | |
US9971577B2 (en) | Method and apparatus for code conversion | |
US6014680A (en) | Method and apparatus for generating structured document | |
Mayer et al. | Bidirectional evaluation with direct manipulation | |
JP2007034813A (ja) | 複数自然言語のソフトウェア説明書生成システム | |
CN111309313A (zh) | 一种快速生成html以及存储表单数据的方法 | |
JPS6375835A (ja) | 目的コ−ド、プログラム・リスト及び設計文書を生成する装置 | |
JP5005510B2 (ja) | ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム | |
KR20080086456A (ko) | 찾기 및 교체 입력의 파생어를 레버리징하는 찾기 및 교체기능을 갖춘 텍스트 편집 방법 및 시스템 | |
CN111124380A (zh) | 一种前端代码生成方法 | |
JP4566196B2 (ja) | 文書処理方法および装置 | |
CN115454414B (zh) | 一种代码处理方法、装置及计算机可读存储介质 | |
CN115904480B (zh) | 代码重构方法、装置、电子设备及存储介质 | |
JP4627530B2 (ja) | 文書処理方法および装置 | |
CN110554860B (zh) | 一种软件项目自然语言编程接口nli的构造方法及代码生成方法 | |
CN111859929B (zh) | 一种数据可视化方法、装置及其相关设备 | |
JP2006285754A (ja) | プログラムソースコード自動生成装置 | |
JP2946715B2 (ja) | プログラム生成方法およびそのための仕様入力方法 | |
Hulden | Rewrite rule gram mars with multitape automata | |
JP3003459B2 (ja) | プログラム作成支援装置 | |
CN108769552B (zh) | 新闻视频制作过程中字幕制作方法 | |
JP4579585B2 (ja) | 音声認識文法作成装置、音声認識文法作成方法、プログラムおよび記憶媒体 | |
JPH10105387A (ja) | Sdl/プログラムコード相互変換方式 | |
CN114817133A (zh) | 一种pdf文件的生成方法、装置、设备及可读存储介质 | |
JP2008186311A (ja) | 複数種類の自然言語でコメントが記述されたソースファイルのファイル変換システム |
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 |