CN106970802A - 在领域特定语言中集成编程脚本语言的方法及装置 - Google Patents

在领域特定语言中集成编程脚本语言的方法及装置 Download PDF

Info

Publication number
CN106970802A
CN106970802A CN201710276536.XA CN201710276536A CN106970802A CN 106970802 A CN106970802 A CN 106970802A CN 201710276536 A CN201710276536 A CN 201710276536A CN 106970802 A CN106970802 A CN 106970802A
Authority
CN
China
Prior art keywords
language
specific
field
sentence
analyzed
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
Application number
CN201710276536.XA
Other languages
English (en)
Other versions
CN106970802B (zh
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.)
Beijing Aerospace Control Center
Original Assignee
Beijing Aerospace Control Center
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 Beijing Aerospace Control Center filed Critical Beijing Aerospace Control Center
Priority to CN201710276536.XA priority Critical patent/CN106970802B/zh
Publication of CN106970802A publication Critical patent/CN106970802A/zh
Application granted granted Critical
Publication of CN106970802B publication Critical patent/CN106970802B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种在领域特定语言中集成编程脚本语言的方法及装置。该方法包括:确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言;依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号;在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系;通过映射关系将领域特定语言与目标编程脚本语言进行集成。通过本发明,解决了相关技术中难以将领域特定语言和通用编程脚本语言进行集成的问题。

Description

在领域特定语言中集成编程脚本语言的方法及装置
技术领域
本发明涉及自然语言处理领域,具体而言,涉及一种在领域特定语言中集成编程脚本语言的方法及装置。
背景技术
相关技术中的领域特定语言,一般只能在特定宿主软件系统中,针对特定领域的业务进行描述和处理。而编程脚本语言有其独立的语法体系,不能面向不同的应用领域进行进一步简化和改良。因此,存在以下几方面的问题:(1)一种全功能的领域特定语言需要大量语法描述。定义一种具有流程控制、条件判断、变量/类/函数定义、异常处理和集合操作等能力的语言,工作量相当于描述或编写一种语言编译器(如C++编译器),对于没有编译器知识背景的应用系统开发人员和各应用领域的专业人员来说几乎难以实现。(2)一般的领域特定语言功能有限。由于受自定义语法复杂程度的限制,它们一般不具有流程控制、条件判断、变量/类/函数定义、异常处理和集合操作的能力。各种命令行语言都属于这种情况。(3)难以与宿主业务流程无缝集成和联合执行。某些领域特定语言,如SQL语言,虽然具有强大的数据库查询和操作能力,但与应用系统的业务处理和执行是分离的。通过SQL语句进行数据库操作,需要宿主业务系统将相关操作需求拼接为字符串形式的SQL语句,并传送给数据库引擎,由数据库引擎解释执行该字符串。而对于需要重复使用的数据库操作,SQL语言使用事务(Transaction)描述,调用时需要在宿主业务中向其传递参数,由数据库引擎单独执行。(4)领域特定语言执行过程与宿主业务过程协调较难。比如数据库引擎出于性能的考虑,一般在收到宿主应用系统的业务调用执行请求后,默认使用后台线程异步执行SQL语句,因此应用业务过程需要通过协调技术实现与SQL语句执行的同步和结果的获取(如最新插入记录的自增长ID号),如强制以同步方式执行SQL语句,导致了业务逻辑设计的复杂化。(5)基于程序设计语言的二次开发技术门槛较高。虽然Java等程序设计语言是全功能的,能够实现对宿主应用系统的定制和扩展,但其语法复杂和严格程度都比一般的编程脚本语言高。而编程脚本语言(如Python)一般较为简洁、灵活。(6)使用程序设计语言不便于部署。虽然Antlr等工具实现了领域特定语言同Java语言的互操作,但经Java编写的代码必须要经过编译器重新编译才能使用,增加了部署难度。
针对相关技术中的上述问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种在领域特定语言中集成编程脚本语言的方法及装置,以解决相关技术中难以将领域特定语言和通用编程脚本语言进行集成的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种领域特定语言中集成编程脚本语言的方法。该方法包括:确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言;依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号,其中,目标关键字用于识别待分析语句中的语言类别属于目标编程脚本语言,预留符号用于识别待分析语句中的语言类别属于领域特定语言;在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系;通过映射关系将领域特定语言与目标编程脚本语言进行集成。
进一步地,在通过映射关系将领域特定语言与目标编程脚本语言进行集成之后,该方法还包括:对待分析语句进行解析,确定待分析语句所属的语言类别;若待分析语句所属的语言类别为领域特定语言,根据待分析语句生成语法树,并根据语法树对待分析语句进行分析;若待分析语句所属的语言类别为目标编程脚本语言,将待分析语句输送至目标引擎进行分析;若待分析语句所属的语言类别为混合语言,将待分析语句发送至翻译器,其中,混合语言中包括领域特定语言和目标编程脚本语言。
进一步地,根据语法树对待分析语句进行分析包括:领域特定语言执行器接收语法树;以及基于语法树访问数据平台以获取数据信息。
进一步地,将待分析语句输送至目标引擎进行分析包括:目标引擎将待分析语句转化为预定类型的参数;传递转化后的参数。
进一步地,在确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号之后,该方法还包括:将目标关键字存储至特征符号表中;将预留符号存储至翻译表中;目标引擎将待分析语句转化为预定类型的参数包括:基于特征符号表和翻译表中的规则将待分析语句转化为预定类型的参数。
为了实现上述目的,根据本发明的另一方面,提供了一种领域特定语言中集成编程脚本语言的装置。该装置包括:第一确定单元,用于确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言;第二确定单元,用于依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号,其中,目标关键字用于识别待分析语句中的语言类别属于目标编程脚本语言,预留符号用于识别待分析语句中的语言类别属于领域特定语言;创建单元,用于在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系;集成单元,用于通过映射关系将领域特定语言与目标编程脚本语言进行集成。
进一步地,该装置还包括:第三确定单元,用于在通过映射关系将领域特定语言与目标编程脚本语言进行集成之后,对待分析语句进行解析,确定待分析语句所属的语言类别;第一分析单元,用于若待分析语句所属的语言类别为领域特定语言,根据待分析语句生成语法树,并根据语法树对待分析语句进行分析;第二分析单元,用于若待分析语句所属的语言类别为目标编程脚本语言,将待分析语句输送至目标引擎进行分析;第三分析单元,用于若待分析语句所属的语言类别为混合语言,将待分析语句发送至翻译器,其中,混合语言中包括领域特定语言和目标编程脚本语言。
进一步地,第一分析单元包括:接收模块,用于领域特定语言执行器接收语法树;以及获取模块,用于基于语法树访问数据平台以获取数据信息。
进一步地,第二分析单元包括:转化模块,用于目标引擎将待分析语句转化为预定类型的参数;传递模块,用于传递转化后的参数。
进一步地,该装置还包括:第一存储单元,用于在确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号之后,将目标关键字存储至特征符号表中;第二存储单元,用于将预留符号存储至翻译表中;转化模块还用于基于特征符号表和翻译表中的规则将待分析语句转化为预定类型的参数。
通过本发明,采用以下步骤:确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言;依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号,其中,目标关键字用于识别待分析语句中的语言类别属于目标编程脚本语言,预留符号用于识别待分析语句中的语言类别属于领域特定语言;在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系;通过映射关系将领域特定语言与目标编程脚本语言进行集成,解决了相关技术中难以将领域特定语言和通用编程脚本语言进行集成的问题。进而实现了将领域特定语言和通用编程脚本语言进行集成,满足用户通过集成式领域特定语言对宿主应用业务系统的扩充需要的效果。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例提供的领域特定语言中集成编程脚本语言的方法的流程图;
图2是根据本发明实施例提供的可选的领域特定语言中集成编程脚本语言的方法的示意图;
图3是根据本发明实施例提供的领域特定语言中集成编程脚本语言的方法的集成式语言处理器结构的示意图;
图4是根据本发明实施例的领域特定语言中集成编程脚本语言的解析处理的示意图;
图5是根据本发明实施例的领域特定语言中集成编程脚本语言的装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本发明实施例涉及的部分名词或术语进行说明:
领域特定语言(Domain-Specific Language,DSL)是针对特定应用领域而设计的计算机语言,它使用约定的文法,表达专业人员的意图,辅助其在该领域中高效地解决问题。领域特定语言一般具有简单易学、面向业务的特点。Windows操作系统中的cmd命令行、Unix操作系统下的shell命令行等都属于领域特定语言。如,下列语句就是cmd一组命令行,能够根据具体情况删除特定文件(note.txt),或提示该文件不存在:
一些领域特定语言的描述和识别工具,如Antlr(Another Tool of LanguageRecognition),能够简化领域特定语言的设计,并使该语言能够与Java语言编写的类库进行交互。
编程脚本语言(Script Programming Languages,SPL)是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言。与程序设计语言(如Java、C#等)不同,编程脚本语言通常是解释执行(在程序运行时识别语言文本的含义并执行)而不是编译执行(在执行前先生成二进制代码)的,通常具有简单、易学、易用、易部署的特性,能够辅助宿主业务平台的功能扩展和定制。近年出现的编程脚本语言(Python,Ruby和Lua等),都能够完成程序设计语言的大部分功能,如流程控制、条件判断、类定义等。大部分的命令行语言由于没有编程能力,仅属于领域特定语言;部分面向特定领域的大型语言(如SQL语言)同时属于领域特定语言和编程脚本语言;通用编程脚本语言(Python,Ruby和Lua等)一般不受应用领域的限制。
Python是一种较受欢迎的编程脚本语言,几乎能够满足业务应用系统管理员和普通用户对当前软件平台扩展定制的所有需求。首先,它具有完全的程序设计能力,支持流程控制、列表和字符串操作,数学计算、类型定义和异常处理。第二,相对于真正的编程语言(如C#),它是一种脚本,更易于学习。因此类似于Python的编程脚本语言规范被引入至本发明中,作为领域特定语言的补充,将强大编程能力和领域特定语言的简单易用性进行紧密结合。IronPython是Python语言在微软.NET平台上的一个实现。
根据本发明的实施例,提供了一种领域特定语言中集成编程脚本语言的方法。
图1是根据本发明实施例的领域特定语言中集成编程脚本语言的方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言。
本发明实施例的领域特定语言中集成编程脚本语言的方法适用于在领域特定语言上集成全功能编程脚本语言,在本发明实施例的目标编程脚本语言以Python为例,对本发明的技术方案进行说明,需要说明的是,这不代表本发明仅能够适用于集成Python,还适用其它编程脚本语言。
在该步骤中,确定领域特定语言和Python语言的语法特征,其中,领域特定语言为依据领域而定的语言。
步骤S102,依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号,其中,目标关键字用于识别待分析语句中的语言类别属于目标编程脚本语言,预留符号用于识别待分析语句中的语言类别属于领域特定语言。
通过上述的确定领域特定语言和目标编程脚本语言的语法特征,再确定目标编程脚本语言中的目标关键字可以为对Python的关键字进行预留。领域特定语言为了兼容Python语法,将Python特有的关键字预留,通过修订语法(符号表、字典或扩展巴科斯范式)的方式,标注需要由Python处理的词法和句法。例如,在领域特定语言的语法中,将词素“if”定义为“Python关键字”(对应上述的目标编程脚本语言中的目标关键字)类型的符号,这样,在待分析语言进行语句分析时,遇到“if”词素,就可以判定该语句是Python语句,转由Python引擎处理。
确定领域特定语言中的预留符号可以为对领域特定语言特征根词素标记,对于具有典型特征的一部分领域特定语言语句,是常用的专用语句,显然不属于Python语句。对于这一类词法和句法,可以通过为该类语句的根词素进行符号标记的方式,标明该语句由只能由领域特定语言解释器进行解释和执行。例如,在字典中,定义“arrange”(安排)词素的“是否为特征根词素”属性为真,标明该词素仅出现领域特定语言的语句中,代表一个安排的命令。这样,只要待分析语句中含有该词素,就直接将整个语句交给领域特定语言解释器,简化了与Python语句进行区分的过程。
步骤S103,在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系。
为了将领域特定语言与目标编程脚本语言进行集成,在本步骤中在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系。例如,将领域特定语言中的“如果”与Python模式的“if”建立映射关系,记录在模式翻译表中。模式可以由具体词或正则表达式描述。可以将领域特定语言中的“如果”的Python模式设为“if”,并且在前后分别加上空格“\s”,在后续在混合语言的处理中,就可以将“如果”翻译为“if”,如下表1所示:
表1
原模式 Python模式
如果 \sif\s
大于 \s>\s
小于 \s<\s
例如,将表1中的领域特定语言中的“大于”与Python模式的“>”建立映射关系,在后续对其分析时,可以将领域特定语言中的“大于”翻译为Python模式的“>”。将领域特定语言中的“<”与Python模式的“>”建立映射关系,在后续对其分析时,可以将领域特定语言中的“<”翻译为Python模式的“>”。
步骤S104,通过映射关系将领域特定语言与目标编程脚本语言进行集成。
本发明实施例提供的领域特定语言中集成编程脚本语言的方法,通过确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言;依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号,其中,目标关键字用于识别待分析语句中的语言类别属于目标编程脚本语言,预留符号用于识别待分析语句中的语言类别属于领域特定语言;在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系;通过映射关系将领域特定语言与目标编程脚本语言进行集成,解决了相关技术中难以将领域特定语言和通用编程脚本语言进行集成的问题。进而实现了将领域特定语言和通用编程脚本语言进行集成,满足用户通过集成式领域特定语言对宿主应用业务系统的扩充需要的效果。
在通过映射关系将领域特定语言与目标编程脚本语言进行集成之后,在需要对混合语言解释执行时,对目标编程脚本语言与领域特定语言的解释和执行是对等的,能够受控的在相同或不同的线程上协调执行,从而解决SQL过程与宿主业务过程协调复杂的问题。
例如,如图2所示,图2是根据本发明实施例提供的可选的领域特定语言中集成编程脚本语言的方法的示意图,确定领域特定语言和目标编程脚本语言的语法特征,python关键字预留,领域特定语言标志词法设计,将领域特定语言的特征词存入特征符号表,建立翻译约定,在模式翻译表中将翻译约定进行存储,并基于以上规则混合语言。也即,在通过翻译约定将领域特定语言与目标编程脚本语言进行集成之后,在需要对混合语言解释执行时,对目标编程脚本语言与领域特定语言的解释和执行是对等的,能够受控的在相同或不同的线程上协调执行,从而解决SQL过程与宿主业务过程协调复杂的问题。
用于处理混合语言(例如,由领域特定语言和Python通用编程脚本语言构成的语言)的处理器结构的示意图,如图3所示,集成式语言处理器的功能模块主要有语句分流器、翻译器、IronPython引擎、领域特定语言解析器、领域特定语言执行器构成。此外,还需要有应用平台逻辑数据环境,即该语言所运行的宿主应用业务系统中的业务数据;以及宿主系统开放给脚本的入口。
在本发明实施例提供的领域特定语言中集成编程脚本语言的方法中,该方法还包括:对待分析语句进行解析,确定待分析语句所属的语言类别;若待分析语句所属的语言类别为领域特定语言,根据待分析语句生成语法树,并根据语法树对待分析语句进行分析;若待分析语句所属的语言类别为目标编程脚本语言,将待分析语句输送至目标引擎进行分析;若待分析语句所属的语言类别为混合语言,将待分析语句发送至翻译器,其中,混合语言中包括领域特定语言和目标编程脚本语言。
语句分流器对输入的待分析语句进行预解析,区分是纯Python语言、混合语言还是纯领域特定语言。根据领域特定语言的特征符号表,当输入的待分析语句完全符合其中的任意一种Python符号模式,即为纯Python语言;若其一部分符合,为混合语言;否则为纯领域特定语言。将其中的纯Python语言输送给IronPython引擎进行分析;将混合语言输送给翻译器进行分析;将纯领域特定语言输送给领域特定语言解析器进行分析。
IronPython引擎在其作用范围内,接受Python语句进行执行。当遇到包括领域特定语言的字符串参数时,呼叫领域特定语言解释器和执行器,使用其返回的值替换原参数。IronPython执行期间与应用平台向IronPython开放的脚本入口进行交互,达到操作应用平台业务数据的效果。
在本发明实施例提供的领域特定语言中集成编程脚本语言的方法中,根据语法树对待分析语句进行分析包括:领域特定语言执行器接收语法树;以及基于语法树访问数据平台以获取数据信息。
领域特定语言解析器对为纯领域特定语言的待分析语句进行解析,根据待分析语句生成语法树生成语法树。领域特定语言执行器接受语法树并执行,期间可以直接访问应用业务平台数据,实现对业务数据的操作。
可选地,在本发明实施例提供的领域特定语言中集成编程脚本语言的方法中,将待分析语句输送至目标引擎进行分析包括:目标引擎将待分析语句转化为预定类型的参数;传递转化后的参数。
需要说明的是,可以将待分析语句(原集成式语句中的领域特定语言)部分将转化为字符串类型的参数,然后向编程脚本语言解析器传递。
例如,翻译器将集成式语言翻译为纯Python语句。其中,原集成式语句中的领域特定语言部分将转化为字符串类型的参数,并传递相关的变量。翻译过程按照模式翻译表进行,将领域特定语言的模式转化或封装为Python语言的模式,再例如,混合语言为:
如果x大于1,安排作业3-001
转化和封装结果为
ifx>1
DSL(“安排作业3-001”);
其中“如果”被翻译为Python关键字“if”,“大于”翻译为“>”;而“安排作业3-001”是领域特定语言,封装为函数DSL(“安排作业3-001”),表明需要通过Python调用领域特定语言解释器处理该语句;而变量x在IronPython作用范围和领域特定语言作用范围内同时进行维护,保证了两个解释器的逻辑一致。
可选地,在本发明实施例提供的领域特定语言中集成编程脚本语言的方法中,在确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号之后,该方法还包括:将目标关键字存储至特征符号表中;将预留符号存储至翻译表中;目标引擎将待分析语句转化为预定类型的参数包括:基于特征符号表和翻译表中的规则将待分析语句转化为预定类型的参数。
需要说明的是,上述的模式翻译表对应这里的翻译表,也即,翻译表即为上述的模式翻译表。在将待分析语句转化为预定类型的参数之后,进行分流,然后传送至对应的处理器。
通过将目标关键字存储至特征符号表,将预留符号存储至翻译表。在目标引擎将待分析语句转化为预定类型的参数时,基于特征符号表和翻译表中的规则将待分析语句转化为预定类型的参数。
上述过程的示意图,如图4所示,图4示出了在通过映射关系将领域特定语言与目标编程脚本语言进行集成之后,对混合语言的解析处理的示意图。
通过上述过程实现了对集成式语句的处理,保证了领域特定语言解释执行和Python语句解释执行对等互动。将领域特定语言与通用编程脚本语言进行无缝集成,集成语句的解析器设计,含语句分流、翻译和变量传递、解释和执行的处理步骤和相关代码。实现了在一种简单文法的领域特定语言中集成编程脚本语言(例如,Python、Ruby或Lua)的目的,集成后的语法可以无缝交替使用两种语言,而无需做特别的区分或标记。借用编程脚本语言的成熟和完整特性,满足用户通过集成式领域特定语言对宿主应用业务系统的扩充需要,从而实现全功能的领域问题的定义和计算。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例还提供了一种领域特定语言中集成编程脚本语言的装置,需要说明的是,本发明实施例的领域特定语言中集成编程脚本语言的装置可以用于执行本发明实施例所提供的用于领域特定语言中集成编程脚本语言的方法。以下对本发明实施例提供的领域特定语言中集成编程脚本语言的装置进行介绍。
图5是根据本发明实施例的领域特定语言中集成编程脚本语言的装置的示意图。如图5所示,该装置包括:第一确定单元10、第二确定单元20、创建单元30和集成单元40。
具体地,第一确定单元10,用于确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言。
第二确定单元20,用于依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号,其中,目标关键字用于识别待分析语句中的语言类别属于目标编程脚本语言,预留符号用于识别待分析语句中的语言类别属于领域特定语言。
创建单元30,用于在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系。
集成单元40,用于通过映射关系将领域特定语言与目标编程脚本语言进行集成。
本发明实施例提供的领域特定语言中集成编程脚本语言的装置,通过第一确定单元10确定领域特定语言和目标编程脚本语言的语法特征,其中,领域特定语言为依据领域而定的语言;第二确定单元20依据领域特定语言和目标编程脚本语言的语法特征,确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号,其中,目标关键字用于识别待分析语句中的语言类别属于目标编程脚本语言,预留符号用于识别待分析语句中的语言类别属于领域特定语言;创建单元30在基于领域特定语言和目标编程脚本语言的语法特征、目标关键字和预留符号的条件下,按照预设规则将领域特定语言与目标编程脚本语言建立映射关系;集成单元40通过映射关系将领域特定语言与目标编程脚本语言进行集成,解决了相关技术中难以将领域特定语言和通用编程脚本语言进行集成的问题。进而实现了将领域特定语言和通用编程脚本语言进行集成,满足用户通过集成式领域特定语言对宿主应用业务系统的扩充需要的效果。
可选地,在本发明实施例提供的领域特定语言中集成编程脚本语言的装置中,该装置还包括:第三确定单元,用于在通过映射关系将领域特定语言与目标编程脚本语言进行集成之后,对待分析语句进行解析,确定待分析语句所属的语言类别;第一分析单元,用于若待分析语句所属的语言类别为领域特定语言,根据待分析语句生成语法树,并根据语法树对待分析语句进行分析;第二分析单元,用于若待分析语句所属的语言类别为目标编程脚本语言,将待分析语句输送至目标引擎进行分析;第三分析单元,用于若待分析语句所属的语言类别为混合语言,将待分析语句发送至翻译器,其中,混合语言中包括领域特定语言和目标编程脚本语言。
可选地,在本发明实施例提供的领域特定语言中集成编程脚本语言的装置中,第一分析单元包括:接收模块,用于领域特定语言执行器接收语法树;以及获取模块,用于基于语法树访问数据平台以获取数据信息。
可选地,在本发明实施例提供的领域特定语言中集成编程脚本语言的装置中,第二分析单元包括:转化模块,用于目标引擎将待分析语句转化为预定类型的参数;传递模块,用于传递转化后的参数。
可选地,在本发明实施例提供的领域特定语言中集成编程脚本语言的装置中,该装置还包括:第一存储单元,用于在确定目标编程脚本语言中的目标关键字和领域特定语言中的预留符号之后,将目标关键字存储至特征符号表中;第二存储单元,用于将预留符号存储至翻译表中;转化模块还用于基于特征符号表和翻译表中的规则将待分析语句转化为预定类型的参数。
所述领域特定语言中集成编程脚本语言的装置包括处理器和存储器,上述第一确定单元10、第二确定单元20、创建单元30和集成单元40等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元实现相应功能。上述预设规则都可以存储在存储器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数处理编程脚本语言。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:确定领域特定语言和目标编程脚本语言的语法特征,其中,所述领域特定语言为依据领域而定的语言;依据所述领域特定语言和所述目标编程脚本语言的语法特征,确定所述目标编程脚本语言中的目标关键字和所述领域特定语言中的预留符号;在基于所述领域特定语言和所述目标编程脚本语言的语法特征、所述目标关键字和所述预留符号的条件下,按照预设规则将所述领域特定语言与所述目标编程脚本语言建立映射关系;通过所述映射关系将所述领域特定语言与所述目标编程脚本语言进行集成。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种领域特定语言中集成编程脚本语言的方法,其特征在于,包括:
确定领域特定语言和目标编程脚本语言的语法特征,其中,所述领域特定语言为依据领域而定的语言;
依据所述领域特定语言和所述目标编程脚本语言的语法特征,确定所述目标编程脚本语言中的目标关键字和所述领域特定语言中的预留符号,其中,所述目标关键字用于识别待分析语句中的语言类别属于所述目标编程脚本语言,所述预留符号用于识别所述待分析语句中的语言类别属于所述领域特定语言;
在基于所述领域特定语言和所述目标编程脚本语言的语法特征、所述目标关键字和所述预留符号的条件下,按照预设规则将所述领域特定语言与所述目标编程脚本语言建立映射关系;
通过所述映射关系将所述领域特定语言与所述目标编程脚本语言进行集成。
2.根据权利要求1所述的方法,其特征在于,在通过所述映射关系将所述领域特定语言与所述目标编程脚本语言进行集成之后,所述方法还包括:
对所述待分析语句进行解析,确定所述待分析语句所属的语言类别;
若所述待分析语句所属的语言类别为所述领域特定语言,根据所述待分析语句生成语法树,并根据所述语法树对所述待分析语句进行分析;
若所述待分析语句所属的语言类别为所述目标编程脚本语言,将所述待分析语句输送至目标引擎进行分析;
若所述待分析语句所属的语言类别为混合语言,将所述待分析语句发送至翻译器,其中,所述混合语言中包括所述领域特定语言和所述目标编程脚本语言。
3.根据权利要求2所述的方法,其特征在于,根据所述语法树对所述待分析语句进行分析包括:
领域特定语言执行器接收所述语法树;以及
基于所述语法树访问数据平台以获取数据信息。
4.根据权利要求2所述的方法,其特征在于,将所述待分析语句输送至目标引擎进行分析包括:
所述目标引擎将所述待分析语句转化为预定类型的参数;
传递转化后的参数。
5.根据权利要求4所述的方法,其特征在于,
在确定所述目标编程脚本语言中的目标关键字和所述领域特定语言中的预留符号之后,所述方法还包括:
将所述目标关键字存储至特征符号表中;
将所述预留符号存储至翻译表中;
所述目标引擎将所述待分析语句转化为预定类型的参数包括:
基于所述特征符号表和所述翻译表中的规则将所述待分析语句转化为预定类型的参数。
6.一种领域特定语言中集成编程脚本语言的装置,其特征在于,包括:
第一确定单元,用于确定领域特定语言和目标编程脚本语言的语法特征,其中,所述领域特定语言为依据领域而定的语言;
第二确定单元,用于依据所述领域特定语言和所述目标编程脚本语言的语法特征,确定所述目标编程脚本语言中的目标关键字和所述领域特定语言中的预留符号,其中,所述目标关键字用于识别待分析语句中的语言类别属于所述目标编程脚本语言,所述预留符号用于识别所述待分析语句中的语言类别属于所述领域特定语言;
创建单元,用于在基于所述领域特定语言和所述目标编程脚本语言的语法特征、所述目标关键字和所述预留符号的条件下,按照预设规则将所述领域特定语言与所述目标编程脚本语言建立映射关系;
集成单元,用于通过所述映射关系将所述领域特定语言与所述目标编程脚本语言进行集成。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第三确定单元,用于在通过所述映射关系将所述领域特定语言与所述目标编程脚本语言进行集成之后,对所述待分析语句进行解析,确定所述待分析语句所属的语言类别;
第一分析单元,用于若所述待分析语句所属的语言类别为所述领域特定语言,根据所述待分析语句生成语法树,并根据所述语法树对所述待分析语句进行分析;
第二分析单元,用于若所述待分析语句所属的语言类别为所述目标编程脚本语言,将所述待分析语句输送至目标引擎进行分析;
第三分析单元,用于若所述待分析语句所属的语言类别为混合语言,将所述待分析语句发送至翻译器,其中,所述混合语言中包括所述领域特定语言和所述目标编程脚本语言。
8.根据权利要求7所述的装置,其特征在于,所述第一分析单元包括:
接收模块,用于领域特定语言执行器接收所述语法树;以及
获取模块,用于基于所述语法树访问数据平台以获取数据信息。
9.根据权利要求7所述的装置,其特征在于,所述第二分析单元包括:
转化模块,用于所述目标引擎将所述待分析语句转化为预定类型的参数;
传递模块,用于传递转化后的参数。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一存储单元,用于在确定所述目标编程脚本语言中的目标关键字和所述领域特定语言中的预留符号之后,将所述目标关键字存储至特征符号表中;
第二存储单元,用于将所述预留符号存储至翻译表中;
所述转化模块还用于基于所述特征符号表和所述翻译表中的规则将所述待分析语句转化为预定类型的参数。
CN201710276536.XA 2017-04-25 2017-04-25 在领域特定语言中集成编程脚本语言的方法及装置 Active CN106970802B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710276536.XA CN106970802B (zh) 2017-04-25 2017-04-25 在领域特定语言中集成编程脚本语言的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710276536.XA CN106970802B (zh) 2017-04-25 2017-04-25 在领域特定语言中集成编程脚本语言的方法及装置

Publications (2)

Publication Number Publication Date
CN106970802A true CN106970802A (zh) 2017-07-21
CN106970802B CN106970802B (zh) 2024-04-09

Family

ID=59333902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710276536.XA Active CN106970802B (zh) 2017-04-25 2017-04-25 在领域特定语言中集成编程脚本语言的方法及装置

Country Status (1)

Country Link
CN (1) CN106970802B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108647192A (zh) * 2018-03-27 2018-10-12 常熟鑫沐奇宝软件开发有限公司 一种用自然语言处理技术生成虚拟现实工作脚本的方法
CN108664238A (zh) * 2018-05-21 2018-10-16 国网河南省电力公司电力科学研究院 一种解释型脚本语言c-sub的执行方法及装置
CN109240679A (zh) * 2018-07-24 2019-01-18 阿里巴巴集团控股有限公司 脚本文件的图形化方法及装置
CN109522319A (zh) * 2018-11-12 2019-03-26 北京懿医云科技有限公司 基于dsl的数据映射方法及装置、电子设备、存储介质
CN109918157A (zh) * 2019-01-08 2019-06-21 北京航天飞行控制中心 操作处理方法和装置
CN110096259A (zh) * 2019-03-15 2019-08-06 佛山青藤信息科技有限公司 一种Web页面元素定位方法及系统
CN110175031A (zh) * 2019-04-25 2019-08-27 平安科技(深圳)有限公司 Sql语言转成dsl语言的方法、装置、计算机设备和存储介质
CN110245002A (zh) * 2019-05-23 2019-09-17 阿里巴巴集团控股有限公司 系统交互方法、装置、设备及存储介质
CN110764783A (zh) * 2018-07-25 2020-02-07 中兴通讯股份有限公司 一种生成信息采集工具的方法及装置、设备、存储介质
WO2020048416A1 (zh) * 2018-09-05 2020-03-12 易保网络技术(上海)有限公司 领域专用语言dsl的图形化处理方法和设备
CN112231068A (zh) * 2020-12-18 2021-01-15 浙江太美医疗科技股份有限公司 使用领域专用语言的自定义逻辑方法、系统和可读介质
CN113050556A (zh) * 2021-03-05 2021-06-29 深圳市艾森智能技术有限公司 一种支持dsl的rtu设备
CN115951868A (zh) * 2022-11-11 2023-04-11 芯华章科技(北京)有限公司 执行脚本命令的方法、设备及存储介质
WO2023061452A1 (zh) * 2021-10-14 2023-04-20 华为技术有限公司 语言互操作方法、装置、存储介质及程序产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010011371A1 (en) * 1998-09-29 2001-08-02 Min-Mei Tang Compilation of embedded language statements in a source code program
US20020026632A1 (en) * 2000-07-28 2002-02-28 Airsys Atm Sa Universal computer code generator
CN101261579A (zh) * 2007-03-08 2008-09-10 青牛(北京)技术有限公司 一种实现VBScript语言跨平台应用的方法
CN102999370A (zh) * 2011-09-16 2013-03-27 腾讯科技(深圳)有限公司 脚本的执行方法及系统
CN104536987A (zh) * 2014-12-08 2015-04-22 联动优势电子商务有限公司 一种查询数据的方法及装置
CN105868204A (zh) * 2015-01-21 2016-08-17 中国移动(深圳)有限公司 一种转换Oracle脚本语言SQL的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010011371A1 (en) * 1998-09-29 2001-08-02 Min-Mei Tang Compilation of embedded language statements in a source code program
US20020026632A1 (en) * 2000-07-28 2002-02-28 Airsys Atm Sa Universal computer code generator
CN101261579A (zh) * 2007-03-08 2008-09-10 青牛(北京)技术有限公司 一种实现VBScript语言跨平台应用的方法
CN102999370A (zh) * 2011-09-16 2013-03-27 腾讯科技(深圳)有限公司 脚本的执行方法及系统
CN104536987A (zh) * 2014-12-08 2015-04-22 联动优势电子商务有限公司 一种查询数据的方法及装置
CN105868204A (zh) * 2015-01-21 2016-08-17 中国移动(深圳)有限公司 一种转换Oracle脚本语言SQL的方法及装置

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108647192B (zh) * 2018-03-27 2022-04-12 常熟鑫沐奇宝软件开发有限公司 一种用自然语言处理技术生成虚拟现实工作脚本的方法
CN108647192A (zh) * 2018-03-27 2018-10-12 常熟鑫沐奇宝软件开发有限公司 一种用自然语言处理技术生成虚拟现实工作脚本的方法
CN108664238A (zh) * 2018-05-21 2018-10-16 国网河南省电力公司电力科学研究院 一种解释型脚本语言c-sub的执行方法及装置
CN109240679A (zh) * 2018-07-24 2019-01-18 阿里巴巴集团控股有限公司 脚本文件的图形化方法及装置
CN110764783A (zh) * 2018-07-25 2020-02-07 中兴通讯股份有限公司 一种生成信息采集工具的方法及装置、设备、存储介质
CN110764783B (zh) * 2018-07-25 2023-04-07 中兴通讯股份有限公司 一种生成信息采集工具的方法及装置、设备、存储介质
WO2020048416A1 (zh) * 2018-09-05 2020-03-12 易保网络技术(上海)有限公司 领域专用语言dsl的图形化处理方法和设备
CN109522319A (zh) * 2018-11-12 2019-03-26 北京懿医云科技有限公司 基于dsl的数据映射方法及装置、电子设备、存储介质
CN109918157A (zh) * 2019-01-08 2019-06-21 北京航天飞行控制中心 操作处理方法和装置
CN110096259A (zh) * 2019-03-15 2019-08-06 佛山青藤信息科技有限公司 一种Web页面元素定位方法及系统
CN110175031A (zh) * 2019-04-25 2019-08-27 平安科技(深圳)有限公司 Sql语言转成dsl语言的方法、装置、计算机设备和存储介质
CN110175031B (zh) * 2019-04-25 2023-08-18 平安科技(深圳)有限公司 Sql语言转成dsl语言的方法、装置、计算机设备和存储介质
CN110245002B (zh) * 2019-05-23 2023-02-17 创新先进技术有限公司 系统交互方法、装置、设备及存储介质
CN110245002A (zh) * 2019-05-23 2019-09-17 阿里巴巴集团控股有限公司 系统交互方法、装置、设备及存储介质
CN112231068B (zh) * 2020-12-18 2021-03-16 浙江太美医疗科技股份有限公司 使用领域专用语言的自定义逻辑方法、系统和可读介质
CN112231068A (zh) * 2020-12-18 2021-01-15 浙江太美医疗科技股份有限公司 使用领域专用语言的自定义逻辑方法、系统和可读介质
CN113050556A (zh) * 2021-03-05 2021-06-29 深圳市艾森智能技术有限公司 一种支持dsl的rtu设备
CN113050556B (zh) * 2021-03-05 2023-01-24 深圳市艾森智能技术有限公司 一种支持dsl的rtu设备
WO2023061452A1 (zh) * 2021-10-14 2023-04-20 华为技术有限公司 语言互操作方法、装置、存储介质及程序产品
CN115951868A (zh) * 2022-11-11 2023-04-11 芯华章科技(北京)有限公司 执行脚本命令的方法、设备及存储介质
CN115951868B (zh) * 2022-11-11 2024-03-12 芯华章科技(北京)有限公司 执行脚本命令的方法、设备及存储介质

Also Published As

Publication number Publication date
CN106970802B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
CN106970802A (zh) 在领域特定语言中集成编程脚本语言的方法及装置
Gabbrielli et al. Programming languages: principles and paradigms
Isberner et al. Learning register automata: from languages to program structures
US8229878B2 (en) Methods and systems for interpreting text using intelligent glossaries
Convent et al. Doo bee doo bee doo
Saini et al. DoMoBOT: a bot for automated and interactive domain modelling
WO2014078747A1 (en) Natural language command string for controlling target applications
US20050246353A1 (en) Automated transformation of unstructured data
US5842205A (en) Method and process of inter-machine communication and generalized method for program preparation therefor
CN110457708A (zh) 基于人工智能的词汇挖掘方法、装置、服务器及存储介质
Pérez-Hurtado et al. A new P-Lingua toolkit for agile development in membrane computing
Lu et al. Deciding determinism of regular languages
Lano et al. Code generation by example using symbolic machine learning
CN112965909B (zh) 测试数据、测试用例生成方法及系统、存储介质
Zhao et al. Pattern-based design evolution using graph transformation
Cereda et al. Syntactic analysis of natural language sentences based on rewriting systems and adaptivity
Krivochen Aspects of emergent cyclicity in language and computation
Usman et al. A study of learning data structure invariants using off-the-shelf tools
Murawski et al. A contextual equivalence checker for IMJ
Moldovan et al. SNAP: a market-propagation architecture for knowledge processing
CN114676258B (zh) 一种基于症状描述文本的非诊断为目的的疾病分类方法
Manaris et al. NALIGE: A user interface management system for the development of natural language interfaces
Durán et al. Automated composition, analysis and deployment of IoT applications
CN109298857A (zh) Dsl语句模型的建立方法、介质、装置和计算设备
Xiao et al. Lightweight natural language driven intent translation mechanism for intent based networking

Legal Events

Date Code Title Description
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