CN114265582A - 一种领域特定语言设计方法、装置、设备及存储介质 - Google Patents
一种领域特定语言设计方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114265582A CN114265582A CN202111582463.XA CN202111582463A CN114265582A CN 114265582 A CN114265582 A CN 114265582A CN 202111582463 A CN202111582463 A CN 202111582463A CN 114265582 A CN114265582 A CN 114265582A
- Authority
- CN
- China
- Prior art keywords
- grammar
- target
- logic
- regular
- environment
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种领域特定语言设计方法、装置、设备及存储介质。该方法包括:根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。通过利用正则语法编写语法规则,不受预定义语法的限制,可根据任意业务领域定制语法规则,同时,通过指定目标运行环境输出,可输出为任意环境下的运行程序,以便生成的程序包可在任意指定环境运行,提高领域特定语言设计的灵活性。
Description
技术领域
本发明涉及领域特定语言技术领域,特别涉及一种领域特定语言设计方法、装置、设备及存储介质。
背景技术
领域特定语言(Domain-Specific language,DSL),指的是专注于某个应用程序领域,具有受限表达性的计算机程序设计语言,作为一种程序设计语言,是可以由计算机执行的语言,具备连贯的表达能力,但它只有在一个明确的小领域下才会有用,主要是为了解决特定领域下的功能实现能力,如SQL(Structured Query Language,结构化查询语言)、HTML(Hyper Text Markup Language,超文本标记语言)等就是很好的领域特定语言实现应用。在构建特定领域下程序软件时,通常需要与本身不是开发人员的领域专家沟通实现细节,如当要构建医疗应用程序是,需要与医生沟通了解配套软件应建议的治疗方法;领域特定语言就是为了将开发人员与领域专家的交流方式统一。
现有技术中,通过规则引擎组件,使用预定义的语义模块编写业务决策,将业务决策从应用程序代码中分离出来,领域专家或开发人员需要理解预定义语义,并完成业务规则的编写和维护,最终业务规则做出业务决策。但是规则引擎组件只能使用预定义语法,语法规则单一,并不能适应各种业务领域,且不支持扩展和自定义,灵活性不高。并且,规则引擎需要指定运行环境,比如部分规则引擎需要在Java环境运行,可移植行不高。另外,如果根据业务领域来定制实现规则引擎,但是实现一套完整的规则引擎需要非常完备的专业知识,开发难度比较大。
发明内容
有鉴于此,本发明的目的在于提供一种领域特定语言设计方法、装置、设备及介质,能够提高领域特定语言设计的灵活性。其具体方案如下:
第一方面,本申请公开了一种领域特定语言设计方法,包括:
根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;
根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;
基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。
可选的,所述根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法之后,还包括:
对所述目标语法进行逻辑检测,以检测所述目标语法的逻辑和语法是否正确;
若所述的逻辑和语法正确,则对所述目标语法进行场景检测,以检测所述目标语法在目标业务场景下的逻辑是否正确;
若所述目标语法在所述目标业务场景下的逻辑正确,则执行所述基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包的步骤。
可选的,所述对所述目标语法进行逻辑检测,包括:
利用语言工作台的语法树生成器基于所述目标语法生成对应的语法树,以根据所述语法树对所述目标语法进行逻辑和语法检测;
所述对所述目标语法进行场景检测,包括:
利用所述语言工作台的模拟测试环境模块,基于所述目标业务场景运行所述目标语法生成运行结果,以便根据所述运行结果对所述目标语法进行场景检测。
可选的,所述利用语言工作台的语法树生成器基于所述目标语法生成对应的语法树,包括:
利用语言工作台的语法树生成器,按照字节流方向对所述目标语法递归解析并根据预先构建的方法库进行正则规则匹配,以确定出所述目标语法内每条正则语法对应的函数,以便根据所述函数生成所述语法树。
可选的,所述根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法,包括:
利用语言工作台的语法编辑器使用正则表达式表述所述语法规则,得到多条正则语法,并对每条正则语法匹配一个对应的函数,以生成所述语法规则对应的方法库。
可选的,所述检测所述目标语法的逻辑和语法是否正确之后,还包括:
若所述目标语法的逻辑和语法不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订;
所述检测所述目标语法在目标业务场景下的逻辑是否正确之后,还包括:
若所述目标语法在所述目标业务场景下的逻辑不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订。
可选的,所述基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,包括:
获取软件运行环境需求,根据所述软件运行环境需求确定出所述目标运行环境;
利用所述语言工作台的指定环境代码生成模块,基于所述目标语法生成所述目标运行环境下的源代码,以得到所述程序包。
第二方面,本申请公开了一种领域特定语言设计装置,包括:
语法规则确定模块,用于根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;
目标语法生成模块,用于根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;
程序包生成模块,用于基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的领域特定语言设计方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述的领域特定语言设计方法。
本申请中,根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。可见,通过利用正则语法编写语法规则,基于正则进行语法描述,不受规则引擎方式的预定义语法的限制,可根据任意业务领域定制语法规则,并且,基于正则描述特定领域语法,需求与开发人员只需要理解正则语法就能完成领域特定语言定义,不需要了解实现细节,降低了设计门槛与开发成本。同时,通过指定目标运行环境输出,可输出为任意环境下的运行程序,以便生成的程序包可在任意指定环境运行,提高领域特定语言设计的灵活性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种领域特定语言设计方法流程图;
图2为本申请提供的一种具体的领域特定语言设计方法流程图;
图3为本申请提供的一种具体的语法解析生成流程图;
图4为本申请提供的一种具体的语言工作台结构图;
图5为本申请提供的一种领域特定语言设计装置结构示意图;
图6为本申请提供的一种电子设备结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,通过规则引擎组件,使用预定义的语义模块编写业务决策,但不能适应各种业务领域,且不支持扩展和自定义,灵活性不高,可移植行不高。为克服上述技术问题,本申请提出一种基于正则实现的领域特定语言设计方法,能够提高领域特定语言设计的灵活性。
本申请实施例公开了一种领域特定语言设计方法,参见图1所示,该方法可以包括以下步骤:
步骤S11:根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则。
本实施例中,首先根据目标领域的业务逻辑制定出该目标领域的语法规则,具体可以通过开发人员直接与领域专家沟通业务逻辑,确定业务逻辑,然后根据业务逻辑制定该目标领域的领域特定语言的语法规则。
步骤S12:根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法。
本实施例中,得到上述语法规则后,根据正则表达式编写所述语法规则,即使用正则表达式来表述语法规则,以得到基于正则表达式描述的目标语法。具体开发人员可以在与领域人员会议结束后或者沟通过程中编写语法正则,尽量做得语法与业务逻辑的直接翻译描述。可以理解的是,正则表达式作为一种文本处理工具,具有非常强的灵活性与功能性,可以迅速地用极简单的方式达到字符串的复杂控制,可以很好地使用正则表达式来定义DSL。
本实施例中,所述根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法之后,还可以包括:对所述目标语法进行逻辑检测,以检测所述目标语法的逻辑和语法是否正确;若所述的逻辑和语法正确,则对所述目标语法进行场景检测,以检测所述目标语法在目标业务场景下的逻辑是否正确;若所述目标语法在所述目标业务场景下的逻辑正确,则执行所述基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包的步骤。即对编辑好的语法进行逻辑测试,确保语法上逻辑正确且没有语法歧义,保证语法可正常工作;然后与领域专家沟通确定特定业务场景,对语法程序做场景测试,并将结果反馈给领域专家,确保业务场景下逻辑正确性。
本实施例中,所述检测所述目标语法的逻辑和语法是否正确之后,还可以包括:若所述目标语法的逻辑和语法不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订;所述检测所述目标语法在目标业务场景下的逻辑是否正确之后,还可以包括:若所述目标语法在所述目标业务场景下的逻辑不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订。也就是说,例如图2所示,通过不断进行逻辑和场景检测,出现问题时通过不断与领域人员沟通完善语法规则,直至上述目标语法没有逻辑及语法问题。
本实施例中,所述对所述目标语法进行逻辑检测,可以包括:利用语言工作台的语法树生成器基于所述目标语法生成对应的语法树,以根据所述语法树对所述目标语法进行逻辑和语法检测。即通过语言工作台的语法树生成器生成目标语法对应的语法树,以便通过上述语法树对目标语法进行逻辑和语法检测。
本实施例中,所述对所述目标语法进行场景检测,可以包括:利用所述语言工作台的模拟测试环境模块,基于所述目标业务场景运行所述目标语法生成运行结果,以便根据所述运行结果对所述目标语法进行场景检测。即具体可以通过语言工作台的模拟测试环境模块,在目标业务场景下运行目标语法并生成运行结果,然后根据所述运行结果对目标语法进行场景检测,由此确保语法在业务场景下的逻辑正确性。
本实施例中,所述利用语言工作台的语法树生成器基于所述目标语法生成对应的语法树,可以包括:利用语言工作台的语法树生成器,按照字节流方向对所述目标语法递归解析并根据预先构建的方法库进行正则规则匹配,以确定出所述目标语法内每条正则语法对应的函数,以便根据所述函数生成所述语法树。本实施例中,所述根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法,可以包括:利用语言工作台的语法编辑器使用正则表达式表述所述语法规则,得到多条正则语法,并对每条正则语法匹配一个对应的函数,以生成所述语法规则对应的方法库。
可以理解的是,本实施例中,领域特定语言的运行原理中,针对基于正则的语法描述,通过使用正则表达式来表述语法规则(regex rule),以四则运算为例,如:
(1)数字:32.55;用正则可描述为:number="\s*(\d+(\.\d+)?)\s*";
(2)加减法:45.23+327;在上述数字的基础上可描述为:addOrSub=number 1+“(+|-)”+number2;
(3)乘除法:376*43.23;同理可表述为:mulOrDiv=number 3+“(*|/)”+number4;
在上述基础上在加上优先级与括号等不断完善正则逻辑,最终可表述复杂表达式如:38*32-(43/32+43)。
针对定义方法库(Library),通过对每一条正则语法匹配一个函数方法(Function),最终生成方法库,还以四则预算为例
(1)数字函数:
deftoNumber(str)=parserNumber(str)
(2)加减法:
(3)乘除法:
这样每条规则都能找到其对应的执行方法。
针对语法解析生成,例如图3所示,通过生成解析器(DSL Parser),向解析器输入语法脚本(DSL Script),解析器以字节流方式递归解析匹配正则规则(regex rule),找到对应规则的函数方法(Function),最终生成语法树(Syntax Tree)。以及最后将定义好的语法规则生成对应工作环境(Working Environment)下的程序包,在环境中引入程序包就能完成特定领域语言脚本的解析工作,生成语法树(Syntax Tree),计算执行结果(Result)。
本实施例中,例如图4所示,上述语言工作台包括语法编辑器、语法树生成器、模拟测试环境模块和指定环境代码生成模块。其中,语法编辑器为基于正则的语法编辑器,用于语法的实时编译校验;语法树生成器,用于基于生成好的语法规则,对语法脚本实时生成语法树结构,以树图形方式展示,从语法树基础上直观检查语法正确性;模拟测试环境模块,用户根据输入的测试场景运行生成结果,验证语法在特定场景下的正确性;指定环境代码生成模块,用于基于不同程序的运行环境生成代码,在程序中引入代码即可拥有语言解释运行能力。可以理解的是,领域特定语言工作台就是提供了一种专用的IDE(IntegratedDevelopment Environment,集成开发环境),用于定义和构建DSL,它不仅用来确定DSL的语言结构,而且是人们编写DSL脚本的编辑环境,最终帮助我们完成DSL的实现。构建DSL不仅需要扎实的专业知识,也需要对DSL做完备的验证与测试,语言工作台则提供了一种完整的工作环境来帮助开发人员定义和构建DSL,通过工作台可以完成DSL的设计与测试工作,并可以输出为基于任意语言环境下的程序包,在不同环境下工作。且本实施例中,基于正则实现的DSL工作台,只要理解正则语法的工作人员都可以很好的在工作台上完成DSL设计。
步骤S13:基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。
本实施例中,基于上述目标语法,根据目标运行环境生成目标运行环境下的程序包,以便利用该程序包进行业务逻辑开发。具体的,将输出的程序包源代码引入软件工程中,就可以做到基于领域特定语言的业务逻辑开发,业务逻辑可直接翻译成领域特定语言脚本,领域专家和开发人员可基于同一语言平台开发测试业务逻辑。
本实施例中,所述基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,可以包括:获取软件运行环境需求,根据所述软件运行环境需求确定出所述目标运行环境;利用所述语言工作台的指定环境代码生成模块,基于所述目标语法生成所述目标运行环境下的源代码,以得到所述程序包。即确定出目标语法且检测语法正确后,根据用户使用需求确定出运行环境,基于目标语法根据软件运行环境选择输出程序包,如Java环境则输出Java源代码。由此,本实施例中通过领域特定语言的语法特征分析,以正则表达式来定义和构建领域特定语言,然后,编写语法测试用例,对编辑好的特定语言语法进行解析测试,验证语法正确性,最后,将编辑好的特定语言生成为一个可在指定目标环境下运行的程序包,实现不同业务逻辑下不同运行环境下各个特定领域的领域特定语言。
由上可见,本实施例中根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。可见,通过利用正则语法编写语法规则,基于正则进行语法描述,不受规则引擎方式的预定义语法的限制,可根据任意业务领域定制语法规则,并且,基于正则描述特定领域语法,需求与开发人员只需要理解正则语法就能完成领域特定语言定义,不需要了解实现细节,降低了设计门槛与开发成本。同时,通过指定目标运行环境输出,可输出为任意环境下的运行程序,以便生成的程序包可在任意指定环境运行,提高领域特定语言设计的灵活性。
相应的,本申请实施例还公开了一种领域特定语言设计装置,参见图5所示,该装置包括:
语法规则确定模块11,用于根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;
目标语法生成模块12,用于根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;
程序包生成模块13,用于基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。
由上可见,本实施例中根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。可见,通过利用正则语法编写语法规则,基于正则进行语法描述,不受规则引擎方式的预定义语法的限制,可根据任意业务领域定制语法规则,并且,基于正则描述特定领域语法,需求与开发人员只需要理解正则语法就能完成领域特定语言定义,不需要了解实现细节,降低了设计门槛与开发成本。同时,通过指定目标运行环境输出,可输出为任意环境下的运行程序,以便生成的程序包可在任意指定环境运行,提高领域特定语言设计的灵活性。
在一些具体实施例中,所述领域特定语言设计装置具体可以包括:
逻辑检测单元,用于对所述目标语法进行逻辑检测,以检测所述目标语法的逻辑和语法是否正确;
场景检测单元,用于若所述的逻辑和语法正确,则对所述目标语法进行场景检测,以检测所述目标语法在目标业务场景下的逻辑是否正确;
程序包生成执行单元,用于若所述目标语法在所述目标业务场景下的逻辑正确,则执行所述基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包的步骤。
在一些具体实施例中,所述逻辑检测单元具体可以包括:
语法树生成单元,用于利用语言工作台的语法树生成器基于所述目标语法生成对应的语法树,以根据所述语法树对所述目标语法进行逻辑和语法检测;
在一些具体实施例中,所述场景检测单元具体可以用于利用所述语言工作台的模拟测试环境模块,基于所述目标业务场景运行所述目标语法生成运行结果,以便根据所述运行结果对所述目标语法进行场景检测。
在一些具体实施例中,所述语法树生成单元具体可以包括:
生成解析器单元,用于利用语言工作台的语法树生成器,按照字节流方向对所述目标语法递归解析并根据预先构建的方法库进行正则规则匹配,以确定出所述目标语法内每条正则语法对应的函数,以便根据所述函数生成所述语法树。
在一些具体实施例中,所述目标语法生成模块12具体可以用于利用语言工作台的语法编辑器使用正则表达式表述所述语法规则,得到多条正则语法,并对每条正则语法匹配一个对应的函数,以生成所述语法规则对应的方法库。
在一些具体实施例中,所述领域特定语言设计装置具体可以包括:
第一修订单元,用于若所述目标语法的逻辑和语法不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订;
第二修订单元,用于若所述目标语法在所述目标业务场景下的逻辑不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订。
在一些具体实施例中,所述程序包生成模块13具体可以包括:
目标运行环境确定单元,用于获取软件运行环境需求,根据所述软件运行环境需求确定出所述目标运行环境;
源代码生成单元,用于利用所述语言工作台的指定环境代码生成模块,基于所述目标语法生成所述目标运行环境下的源代码,以得到所述程序包。
进一步的,本申请实施例还公开了一种电子设备,参见图6所示,图中的内容不能被认为是对本申请的使用范围的任何限制。
图6为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的领域特定语言设计方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作***221、计算机程序222及包括目标语法在内的数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作***221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的领域特定语言设计方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的领域特定语言设计方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种领域特定语言设计方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种领域特定语言设计方法,其特征在于,包括:
根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;
根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;
基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。
2.根据权利要求1所述的领域特定语言设计方法,其特征在于,所述根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法之后,还包括:
对所述目标语法进行逻辑检测,以检测所述目标语法的逻辑和语法是否正确;
若所述的逻辑和语法正确,则对所述目标语法进行场景检测,以检测所述目标语法在目标业务场景下的逻辑是否正确;
若所述目标语法在所述目标业务场景下的逻辑正确,则执行所述基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包的步骤。
3.根据权利要求2所述的领域特定语言设计方法,其特征在于,所述对所述目标语法进行逻辑检测,包括:
利用语言工作台的语法树生成器基于所述目标语法生成对应的语法树,以根据所述语法树对所述目标语法进行逻辑和语法检测;
所述对所述目标语法进行场景检测,包括:
利用所述语言工作台的模拟测试环境模块,基于所述目标业务场景运行所述目标语法生成运行结果,以便根据所述运行结果对所述目标语法进行场景检测。
4.根据权利要求3所述的领域特定语言设计方法,其特征在于,所述利用语言工作台的语法树生成器基于所述目标语法生成对应的语法树,包括:
利用语言工作台的语法树生成器,按照字节流方向对所述目标语法递归解析并根据预先构建的方法库进行正则规则匹配,以确定出所述目标语法内每条正则语法对应的函数,以便根据所述函数生成所述语法树。
5.根据权利要求4所述的领域特定语言设计方法,其特征在于,所述根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法,包括:
利用语言工作台的语法编辑器使用正则表达式表述所述语法规则,得到多条正则语法,并对每条正则语法匹配一个对应的函数,以生成所述语法规则对应的方法库。
6.根据权利要求2所述的领域特定语言设计方法,其特征在于,所述检测所述目标语法的逻辑和语法是否正确之后,还包括:
若所述目标语法的逻辑和语法不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订;
所述检测所述目标语法在目标业务场景下的逻辑是否正确之后,还包括:
若所述目标语法在所述目标业务场景下的逻辑不正确,则根据检测结果和所述业务逻辑对所述语法规则进行修订。
7.根据权利要求1至6任一项所述的领域特定语言设计方法,其特征在于,所述基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,包括:
获取软件运行环境需求,根据所述软件运行环境需求确定出所述目标运行环境;
利用所述语言工作台的指定环境代码生成模块,基于所述目标语法生成所述目标运行环境下的源代码,以得到所述程序包。
8.一种领域特定语言设计装置,其特征在于,包括:
语法规则确定模块,用于根据目标领域的业务逻辑,确定出所述目标领域对应的语法规则;
目标语法生成模块,用于根据正则表达式编写所述语法规则,以得到基于正则表达式描述的目标语法;
程序包生成模块,用于基于所述目标语法根据目标运行环境生成所述目标运行环境下的程序包,以便利用所述程序包进行业务逻辑开发。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的领域特定语言设计方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中计算机程序被处理器执行时实现如权利要求1至7任一项所述的领域特定语言设计方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111582463.XA CN114265582A (zh) | 2021-12-22 | 2021-12-22 | 一种领域特定语言设计方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111582463.XA CN114265582A (zh) | 2021-12-22 | 2021-12-22 | 一种领域特定语言设计方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114265582A true CN114265582A (zh) | 2022-04-01 |
Family
ID=80829045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111582463.XA Pending CN114265582A (zh) | 2021-12-22 | 2021-12-22 | 一种领域特定语言设计方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114265582A (zh) |
-
2021
- 2021-12-22 CN CN202111582463.XA patent/CN114265582A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wachsmuth et al. | Language design with the spoofax language workbench | |
Nguyen et al. | Cross-language program slicing for dynamic web applications | |
US20070113221A1 (en) | XML compiler that generates an application specific XML parser at runtime and consumes multiple schemas | |
CN108595334B (zh) | 一种计算Java程序动态切片的方法、装置及可读存储介质 | |
Cánovas Izquierdo et al. | A domain specific language for extracting models in software modernization | |
Marceau et al. | The design and implementation of a dataflow language for scriptable debugging | |
CN109359055B (zh) | 一种数据测试的方法和设备 | |
Agarwal et al. | Copilot Evaluation Harness: Evaluating LLM-Guided Software Programming | |
Nguyen et al. | Varis: IDE support for embedded client code in PHP web applications | |
Kim et al. | Combining weak and strong mutation for a noninterpretive Java mutation system | |
Fudaba et al. | Pseudogen: A tool to automatically generate pseudo-code from source code | |
Ortin et al. | Cnerator: A Python application for the controlled stochastic generation of standard C source code | |
JP2879099B1 (ja) | 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置 | |
CN114265582A (zh) | 一种领域特定语言设计方法、装置、设备及存储介质 | |
Marin et al. | Towards a framework for generating program dependence graphs from source code | |
Bastrykina et al. | Developing reflex IDE kernel with Xtext framework | |
Girka et al. | A mechanically checked generation of correlating programs directed by structured syntactic differences | |
KR20230040516A (ko) | 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법 | |
Carre | Program analysis and verification | |
Grigorev et al. | String-embedded language support in integrated development environment | |
Arruda et al. | Automation and consistency analysis of test cases written in natural language: An industrial context | |
de Boer et al. | SymPaths: Symbolic execution meets partial order reduction | |
Skystedt | A New Synthesis Tool for Agda | |
Wasser et al. | Modeling Non-deterministic C Code with Active Objects | |
Yildiz et al. | A model-derivation framework for software analysis |
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 |