CN114237577A - 一种基于cel与ml实现图灵完备语言解析器及解析方法 - Google Patents
一种基于cel与ml实现图灵完备语言解析器及解析方法 Download PDFInfo
- Publication number
- CN114237577A CN114237577A CN202210169545.XA CN202210169545A CN114237577A CN 114237577 A CN114237577 A CN 114237577A CN 202210169545 A CN202210169545 A CN 202210169545A CN 114237577 A CN114237577 A CN 114237577A
- Authority
- CN
- China
- Prior art keywords
- language
- branch
- cel
- field
- loop
- 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
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
- G06F8/315—Object-oriented languages
-
- 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
- G06F8/313—Logic programming, e.g. PROLOG programming language
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于CEL与ML实现图灵完备语言解析方法及解析器,采用以下技术方案:用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;建立条件成立分支,进行是否能满足分支逻辑判断;循环结构的执行,根据语言节点判断并执行结构体的循环结构。本发明中的语法树可转换为通用的ML,市面上大部分语言都支持,可以轻松的在其他语言上编写一套运行环境,具有很强的语言扩展性。
Description
技术领域
本发明属计算机技术领域,具体涉及一种基于CEL与ML实现图灵完备语言解析器及解析方法。
背景技术
ML为“Markup Language”的首字母缩写,即“标记语言”,CEL为“commonexpression language”的首字母缩写即“通用表达语言”,cel为google公司实现,为一门嵌入式语言,CEL实现了表达式计算的通用语义,使不同的应用程序能够更轻松地互操作,如go和C++,可以通过使用CEL,来统一表达式,无视语言差异。但是在CEL语言本身上没有上下文概念,依赖于宿主语言,必须在go/c++ 等语言中运行时解析,缺少逻辑判断与循环结构,无法表示用于编写复杂逻辑,不具备图灵完备性。
发明内容
本发明的目的是为解决cel不具备图灵完整性的问题,使其拥有上下文概念,支持条件判断分支语句,循环语句,变量的定义,从而提出了一种基于CEL与ML实现图灵完备语言解析方法及解析器。
为实现上述目的本发明所采用的技术方案是:一种基于CEL与ML实现图灵完备语言解析方法,其操作如下,
用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;
对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;
建立条件成立分支,进行是否能实现分支逻辑判断;
循环结构的执行,根据语言节点判断并执行结构体的循环结构。
进一步地,所述结构体包括Content结构、var结构和Judgment结构。
进一步地,建立条件成立分支时,先构建结构体,得到一个多叉的结构树,以实现分支判断逻辑。
进一步地,进行是否能实现分支逻辑判断具体过程如下:
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。
进一步地,循环结构的执行具体操作如下,
5.1解析语言文本多叉树形结构;
5.2找到树的根节点,判断结构体中的循环结构字段是否为空;
如果循环结构字段为空,则结束循环结构的流程;
如果循环结构字段不为空,则找到根节点的循环条件字段;
5.3通过CEL执行5.2中的循环条件字段,得到返回值,即CEL执行的结果;
5.4如果5.3结果为真,则将结构体的循环体作为根节点,然后执行步骤5.2;
5.5如果5.3结果为假,则结束循环结构。
本发明还提供了一种基于CEL与ML实现图灵完备语言解析器,该语言解析器采用文本标记语言作为语言载体,其包括
解析模块:用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;
结构体转化模块:对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;
分支判断逻辑模块:建立条件成立分支,进行是否能满足分支逻辑判断;
循环结构模块:循环结构的执行,根据语言节点判断并执行结构体的循环结构。
相比现有技术,本发明具有如下优点:
1.本发明使用序列化数据结构为载体,最终载体丰富,可以为json、yaml、xml等格式,具有良好的可读性。
2.本发明中的数据结构为通用结构,市面上大部分语言都支持,可以轻松的在其他语言上编写一套运行环境,具有很强的语言扩展性。
3.本发明的最终语言格式为json,yaml,xml等,所以对可视化编程支持非常友好。
附图说明
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是发明语言中的层级关系图。
图2是多叉树的节点示意图。
图3是循环结构示意图。
图4是条件分支语句构建示意图。
图5是分支判断结构逻辑的流程图。
图6是循环结构的执行流程图。
具体实施方式
为使本发明目的、技术方案和优点更加清楚,下面对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明的一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。
实施例
以下结合具体实施例和附图对本发明方法进行详细说明。
本发明方法旨在为低代码平台提供一套方便机器生成的,具有图灵完备性的中间语言;或是为满足Golang编写的软件系的逻辑扩展性需求而又不至于引入其他编程语言的虚拟机,本发明将ML(markup language)文本标记语言与CEL通用表达式语言进行结合,完成在Golang语言内实现了一套运行在Golang runtime中的可与Golang交互的编程语言。
本发明实现基于CEL与ML实现图灵完备语言解析方法过程如下
1.用ML文本标记语言作为本发明的语言载体,通过ML语言具有层次结构的特性,来描述本发明语言中的层级关系如图1所示,通过ML语言的描述,可以把语言结构分为二叉或者多叉的树形结构。
2.本发明将语言节点进行了抽象,针对不同的功能定义了3种结构体结构体之间可相互引用来实现树形结构:
Content结构
序号 | 意义 | 类型 |
1 | 变量定义表达式 | Var结构 |
2 | 循环体 | Content结构 |
3 | 循环条件 | String |
4 | 主体语句 | String |
5 | 分支判断体 | Judgment 结构 |
Var 结构
序号 | 意义 | 类型 |
1 | 变量名 | String |
2 | 变量类型名称 | String |
Judgment 结构
序号 | 意义 | 类型 |
1 | 判断条件 | String |
2 | 条件成立分支 | Content结构 |
3 | 条件不成立分支 | Content结构 |
其中Content结构与Judgment 结构之间相互引用,形成闭环,其依赖关系如图3所示,通过图2的关系依赖图可以得到一个引用闭环。
图2中所展示的每一个个content节点,在理论和实际上都符合上述表格和图3中Content结构的格式。
3.条件分支语句的实现,需要构建图4表示的结构。通过步骤1或2,可以得到一个多叉的Content结构树,满足图4表示的结构,便可以实现分支判断逻辑。如图5所示,具体方法为:
3.1:解析本发明代码为图2所示的多叉树形结构。
3.2:找到树的根节点,判断Content结构的“分支判断体”字段是否为空。
3.3:如果分支判断体为空,则结束分支判断结构逻辑的流程。
3.4:如果分支判断体不为空,则找到Judgment结构中的“判断条件”字段
3.5:将3.4中找到的“判断条件”字段表达式用CEL进行运行,得到返回值。
3.6:如果3.5结果为真,则找到Judgment结构中的“条件成立分支”字段。
3.7:将3.6中找到的“条件成立分支”字段设置为根节点,执行步骤3.2.
3.8:如果3.5结果为假,则找到Judgment结构中的“条件不成立分支”字段。
3.9:将3.8中找到的“条件不成立分支”字段设置为根节点,执行步骤3.2.
4.循环结构的执行流程为图6所示,本质上是对步骤3的扩展,其具体流程为:
4.1:解析本发明代码为图2所示的多叉树形结构。
4.2:找到树的根节点,判断Content结构的“循环体”字段是否为空;
如果循环体字段为空,则结束循环结构的流程;
如果循环体字段不为空,则找到根节点的循环条件字段。
4.3:通过CEL执行Content结构的循环条件字段,得到返回值。
4.4:如果4.3结果为真,则将Content结构的循环体作为根节点,然后执行步骤4.2.
4.5:如果4.3结果为假,则结束循环结构。
本发明通过不同的步骤分别解决了CEL无结构的问题、本发明的语言结构设计问题、CEL缺少逻辑判断问题、CEL缺少循环语句问题,将其组和便可实现图灵完备性编程语言。
本发明还提供了一种基于CEL与ML实现图灵完备语言解析器,该语言解析器采用文本标记语言作为语言载体,其包括
解析模块:用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;
结构体转化模块:对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;
分支判断逻辑模块:建立条件成立分支,进行是否能实现分支逻辑判断;
循环结构模块:循环结构的执行,根据语言节点判断并执行结构体的循环结构
本发明解决了cel不具备图灵完整性的问题,使其拥有上下文概念,支持条件判断分支语句,循环语句,变量的定义。
本发明该专利使用了含有层级结构的数据结构来作为cel的载体,具体使用到的数据结构为链表、哈希列表两种,最终通过序列化技术将结构序列化为字符串,得到目标语言。
本发明在实现了层级关系的基础上,为了使其拥有上下文概念,支持条件判断分支语句,循环语句,变量的定义等功能,还需要一个运行环境,本发明采用了go语言为其实现了解析器,通过加载目标语言后进行反序列化,将代码转换为二进制数据,将数据送入解析器,解析器根据哈希表中的key值来完成相应的功能实现,此时解决了cel不具备图灵完整性的问题,实现cel语言具有图灵完整性。
以上仅是本发明的优选实施方式,应当指出的是,上述优选实施方式不应视为对本发明的限制,本发明的保护范围应当以权利要求所限定的范围为准。对于本技术领域的普通技术人员来说,在不脱离本发明的精神和范围内,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
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中结果为真,则找到结构体中的“条件成立分支”字段;并将找到的“条件成立分支”字段设置为根节点,然后执行步骤4.2;
4.5如果4.3中结果为空,则找到结构体中的“条件不成立分支”字段;并将找到的“条件不成立分支”字段设置为根节点,然后执行步骤4.2。
5.根据权利要求1所述的基于CEL与ML实现图灵完备语言解析方法,其特征在于,循环结构的执行具体操作如下,
5.1解析语言文本多叉树形结构;
5.2找到树的根节点,判断结构体中的循环结构字段是否为空;
如果循环结构字段为空,则结束循环结构的流程;
如果循环结构字段不为空,则找到根节点的循环条件字段;
5.3通过CEL执行5.2中的循环条件字段,得到返回值,即CEL执行的结果;
5.4如果5.3结果为真,则将结构体的循环体作为根节点,然后执行步骤5.2;
5.5如果5.3结果为假,则结束循环结构。
6.一种基于CEL与ML实现图灵完备语言解析器,其特征在于,该语言解析器采用文本标记语言作为语言载体,其包括:
解析模块:用文本标记语言作为语言载体,通过文本标记语言来解析语言中的层级关系并把语言结构分为二叉或者多叉的树形结构;
结构体转化模块:对语言节点进行分析并定义结构体,对不同结构体进行相互引用实现树形结构;
分支判断逻辑模块:建立条件成立分支,进行是否能满足分支逻辑判断;
循环结构模块:循环结构的执行,根据语言节点判断并执行结构体的循环结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210169545.XA CN114237577B (zh) | 2022-02-24 | 2022-02-24 | 一种基于cel与ml实现图灵完备语言解析系统及解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210169545.XA CN114237577B (zh) | 2022-02-24 | 2022-02-24 | 一种基于cel与ml实现图灵完备语言解析系统及解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114237577A true CN114237577A (zh) | 2022-03-25 |
CN114237577B CN114237577B (zh) | 2022-05-06 |
Family
ID=80747954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210169545.XA Active CN114237577B (zh) | 2022-02-24 | 2022-02-24 | 一种基于cel与ml实现图灵完备语言解析系统及解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237577B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1898666A (zh) * | 2003-10-22 | 2007-01-17 | 英特尔公司 | 用于进行高性能结构化数据转换的硬件/软件分区 |
US20070143748A1 (en) * | 2005-12-20 | 2007-06-21 | International Business Machines Corporation | System and method for emulating the processing of Java Server Pages |
US20090089658A1 (en) * | 2007-09-27 | 2009-04-02 | The Research Foundation, State University Of New York | Parallel approach to xml parsing |
US20100205205A1 (en) * | 2009-02-06 | 2010-08-12 | Greg Hamel | Computing platform based on a hierarchy of nested data structures |
CN101952815A (zh) * | 2007-10-22 | 2011-01-19 | 埃克斯里昂股份公司 | 基于姿态的协作 |
US20110035398A1 (en) * | 2009-08-04 | 2011-02-10 | National Taiwan University Of Science & Technology | Streaming query system and method for extensible markup language |
US8191038B1 (en) * | 2007-10-09 | 2012-05-29 | Google Inc. | Using a templating language to produce a host language factory for a safe subset of a templated language |
-
2022
- 2022-02-24 CN CN202210169545.XA patent/CN114237577B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1898666A (zh) * | 2003-10-22 | 2007-01-17 | 英特尔公司 | 用于进行高性能结构化数据转换的硬件/软件分区 |
US20070143748A1 (en) * | 2005-12-20 | 2007-06-21 | International Business Machines Corporation | System and method for emulating the processing of Java Server Pages |
US20090089658A1 (en) * | 2007-09-27 | 2009-04-02 | The Research Foundation, State University Of New York | Parallel approach to xml parsing |
US8191038B1 (en) * | 2007-10-09 | 2012-05-29 | Google Inc. | Using a templating language to produce a host language factory for a safe subset of a templated language |
CN101952815A (zh) * | 2007-10-22 | 2011-01-19 | 埃克斯里昂股份公司 | 基于姿态的协作 |
US20100205205A1 (en) * | 2009-02-06 | 2010-08-12 | Greg Hamel | Computing platform based on a hierarchy of nested data structures |
US20110035398A1 (en) * | 2009-08-04 | 2011-02-10 | National Taiwan University Of Science & Technology | Streaming query system and method for extensible markup language |
Non-Patent Citations (4)
Title |
---|
VAHID GAROUSI等: ""NLP-assisted software testing: A systematic mapping of the literature"", 《INFORMATION AND SOFTWARE TECHNOLOGY》 * |
YITZHAK MANDELBAUM等: ""PADS/ML: A Functional Data Description Language"", 《ACM SIGPLAN NOTICES》 * |
沈军 等: ""基于Java的XML解析器设计与实现"", 《小型微型计算机系统》 * |
石文浩: ""软件定义架构下支持能量交换的通信协议设计与实现"", 《中国优秀博硕士学位论文全文数据库(硕士) 工程科技Ⅱ辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114237577B (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Maeda | Performance evaluation of object serialization libraries in XML, JSON and binary formats | |
Grau et al. | OWL 2: The next step for OWL | |
CN111309757B (zh) | 一种HBase的SQL解释器和优化方法 | |
US20080288575A1 (en) | Xml-based symbolic language and interpreter | |
US10437564B1 (en) | Object mapping and conversion system | |
CN108037913B (zh) | xUML4MC模型到MSVL语言程序的转换方法、计算机可读存储介质 | |
CN107133027A (zh) | 一种语法树层次化表示方法 | |
CN108766507B (zh) | 一种基于CQL与标准信息模型openEHR的临床质量指标计算方法 | |
WO2022099888A1 (zh) | 一种实现编译型嵌入式Python的方法 | |
CN111695002B (zh) | 一种基于xml语句的数据库无关的查询方法 | |
CN114237577B (zh) | 一种基于cel与ml实现图灵完备语言解析系统及解析方法 | |
US7788246B2 (en) | Linguistic structure for data flow diagrams | |
CN111694738A (zh) | 一种sql测试脚本的生成方法 | |
Raychaudhuri | Scala in action | |
CN107368302B (zh) | 一种基于本体的设计模式识别方法 | |
CN103019801B (zh) | 一种应用于高速数字io波形引擎的编译器 | |
Mu et al. | Automatic test method research on the word part of document format translator | |
CN114217812A (zh) | 一种异构众核程序动态调用树分析装置及分析方法 | |
Christensen et al. | A runtime system for XML transformations in Java | |
CN116881269A (zh) | 基于json的对象关系映射框架的实现方法及系统 | |
CN115729677A (zh) | 脚本引擎系统和计算机装置 | |
Li et al. | A framework for object-oriented data mining | |
CN114756238A (zh) | 一种动态化编译的方法、装置、设备和存储介质 | |
Zhou et al. | Implementation of G Language | |
Maggiolo-Schettini et al. | Procedure linkage optimization working paper |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A Turing Complete Language Parsing System and Parsing Method Based on CEL and ML Effective date of registration: 20230712 Granted publication date: 20220506 Pledgee: Sichuan Tianfu bank Limited by Share Ltd. Chengdu branch Pledgor: CHENGDU NO SUGAR INFORMATION TECH Co.,Ltd. Registration number: Y2023510000179 |