一种基于CEL与ML实现图灵完备语言解析器及解析方法技术

技术编号:32818431 阅读:59 留言:0更新日期:2022-03-26 20:15
本发明专利技术公开了一种基于CEL与ML实现图灵完备语言解析方法及解析器,采用以下技术方案:用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;建立条件成立分支,进行是否能满足分支逻辑判断;循环结构的执行,根据语言节点判断并执行结构体的循环结构。本发明专利技术中的语法树可转换为通用的ML,市面上大部分语言都支持,可以轻松的在其他语言上编写一套运行环境,具有很强的语言扩展性。具有很强的语言扩展性。具有很强的语言扩展性。

【技术实现步骤摘要】
一种基于CEL与ML实现图灵完备语言解析器及解析方法


[0001]本专利技术属计算机
,具体涉及一种基于CEL与ML实现图灵完备语言解析器及解析方法。

技术介绍

[0002]ML为“Markup Language”的首字母缩写,即“标记语言”,CEL为“common expression language”的首字母缩写即“通用表达语言”,cel为google公司实现,为一门嵌入式语言,CEL实现了表达式计算的通用语义,使不同的应用程序能够更轻松地互操作,如go和C++,可以通过使用CEL,来统一表达式,无视语言差异。但是在CEL语言本身上没有上下文概念,依赖于宿主语言,必须在go/c++ 等语言中运行时解析,缺少逻辑判断与循环结构,无法表示用于编写复杂逻辑,不具备图灵完备性。

技术实现思路

[0003]本专利技术的目的是为解决cel不具备图灵完整性的问题,使其拥有上下文概念,支持条件判断分支语句,循环语句,变量的定义,从而提出了一种基于CEL与ML实现图灵完备语言解析方法及解析器。
[0004]为实现上述目的本专利技术所采用的技术方案是:一种基于CEL与ML实现图灵完备语言解析方法,其操作如下,用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;建立条件成立分支,进行是否能实现分支逻辑判断;循环结构的执行,根据语言节点判断并执行结构体的循环结构。
[0005]进一步地,所述结构体包括Content结构、var结构和Judgment结构。
[0006]进一步地,建立条件成立分支时,先构建结构体,得到一个多叉的结构树,以实现分支判断逻辑。
[0007]进一步地,进行是否能实现分支逻辑判断具体过程如下:4.1解析语言文本为多叉树形结构;4.2找到树的根节点,判断结构体的“分支判断体”字段是否为空;如果分支判断体为空,则结束分支判断结构逻辑的流程;如果分支判断体不为空,则找到结构体中的“判断条件”字段;4.3将4.2中找到的“判断条件”字段表达式用CEL进行运行,得到返回值,即CEL运行的结果;4.4如果4.3中结果为真,则找到结构体中的“条件成立分支”字段;4.5将4.4中找到的“条件成立分支”字段设置为根节点,然后执行步骤4.2;4.6如果4.3中结果为空,则找到结构体中的“条件不成立分支”字段;
4.7将4.6中找到的“条件不成立分支”字段设置为根节点,然后执行步骤4.2。
[0008]进一步地,循环结构的执行具体操作如下,5.1解析语言文本多叉树形结构;5.2找到树的根节点,判断结构体中的循环结构字段是否为空;如果循环结构字段为空,则结束循环结构的流程;如果循环结构字段不为空,则找到根节点的循环条件字段;5.3通过CEL执行5.2中的循环条件字段,得到返回值,即CEL执行的结果;5.4如果5.3结果为真,则将结构体的循环体作为根节点,然后执行步骤5.2;5.5如果5.3结果为假,则结束循环结构。
[0009]本专利技术还提供了一种基于CEL与ML实现图灵完备语言解析器,该语言解析器采用文本标记语言作为语言载体,其包括解析模块:用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;结构体转化模块:对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;分支判断逻辑模块:建立条件成立分支,进行是否能满足分支逻辑判断;循环结构模块:循环结构的执行,根据语言节点判断并执行结构体的循环结构。
[0010]相比现有技术,本专利技术具有如下优点:1.本专利技术使用序列化数据结构为载体,最终载体丰富,可以为json、yaml、xml等格式,具有良好的可读性。
[0011]2.本专利技术中的数据结构为通用结构,市面上大部分语言都支持,可以轻松的在其他语言上编写一套运行环境,具有很强的语言扩展性。
[0012]3.本专利技术的最终语言格式为json,yaml,xml等,所以对可视化编程支持非常友好。
附图说明
[0013]为了更清楚地说明本专利技术实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0014]图1是专利技术语言中的层级关系图。
[0015]图2是多叉树的节点示意图。
[0016]图3是循环结构示意图。
[0017]图4是条件分支语句构建示意图。
[0018]图5是分支判断结构逻辑的流程图。
[0019]图6是循环结构的执行流程图。
具体实施方式
[0020]为使本专利技术目的、技术方案和优点更加清楚,下面对本专利技术实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本专利技术的一部分实施方式,而不是全
部的实施方式。基于本专利技术中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本专利技术保护的范围。因此,以下提供的本专利技术的实施方式的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施方式。
实施例
[0021]以下结合具体实施例和附图对本专利技术方法进行详细说明。
[0022]本专利技术方法旨在为低代码平台提供一套方便机器生成的,具有图灵完备性的中间语言;或是为满足Golang编写的软件系的逻辑扩展性需求而又不至于引入其他编程语言的虚拟机,本专利技术将ML(markup language)文本标记语言与CEL通用表达式语言进行结合,完成在Golang语言内实现了一套运行在Golang runtime中的可与Golang交互的编程语言。
[0023]本专利技术实现基于CEL与ML实现图灵完备语言解析方法过程如下1.用ML文本标记语言作为本专利技术的语言载体,通过ML语言具有层次结构的特性,来描述本专利技术语言中的层级关系如图1所示,通过ML语言的描述,可以把语言结构分为二叉或者多叉的树形结构。
[0024]2.本专利技术将语言节点进行了抽象,针对不同的功能定义了3种结构体结构体之间可相互引用来实现树形结构:Content结构序号意义类型1变量定义表达式Var结构2循环体Content结构3循环条件String4主体语句String5分支判断体Judgment结构Var 结构序号意义类型1变量名String2变量类型名称StringJudgment 结构序号意义类型1判断条件String2条件成立分支Content结构3条件不成立分支Content结构其中Content结构与Judgment 结构之间相互引用,形成闭环,其依赖关系如图3所示,通过图2的关系依赖图可以得到一个引用闭环。
[0025]图2中所展示的每一个个content节点,在理论和实际上都符合上本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于CEL与ML实现图灵完备语言解析方法,其特征在于,用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;建立条件成立分支,进行是否能实现分支逻辑判断;循环结构的执行,根据语言节点判断并执行结构体的循环结构。2.根据权利要求1所述的基于CEL与ML实现图灵完备语言解析方法,其特征在于,所述结构体包括Content结构、var结构和Judgment结构。3.根据权利要求1所述的基于CEL与ML实现图灵完备语言解析方法,其特征在于,建立条件成立分支时,先构建结构体,得到一个多叉的结构树,以实现分支判断逻辑。4.根据权利要求3所述的基于CEL与ML实现图灵完备语言解析方法,其特征在于,进行是否能实现分支逻辑判断具体过程如下:4.1解析语言文本为多叉树形结构;4.2找到树的根节点,判断结构体的“分支判断体”字段是否为空;如果分支判断体为空,则结束分支判断结构逻辑的流程;如果分支判断体不为空,则找到结构体中的“判断条件”字段;4.3将4.2中找到的“判断条件”字段表达式用CEL进行运行,得到返回值,即CEL运行的结果;4.4如果4.3中结果为真,则找到结构体中的“条件成立分支”字段;并将找到的“...

【专利技术属性】
技术研发人员:李抒阳李维童永鳌张瑞冬朱鹏
申请(专利权)人:成都无糖信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1