CN106843858B - 一种由转换原语生成Spark代码的方法 - Google Patents

一种由转换原语生成Spark代码的方法 Download PDF

Info

Publication number
CN106843858B
CN106843858B CN201611252903.4A CN201611252903A CN106843858B CN 106843858 B CN106843858 B CN 106843858B CN 201611252903 A CN201611252903 A CN 201611252903A CN 106843858 B CN106843858 B CN 106843858B
Authority
CN
China
Prior art keywords
primitive
conversion
file
spark
domain
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
Application number
CN201611252903.4A
Other languages
English (en)
Other versions
CN106843858A (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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN201611252903.4A priority Critical patent/CN106843858B/zh
Publication of CN106843858A publication Critical patent/CN106843858A/zh
Application granted granted Critical
Publication of CN106843858B publication Critical patent/CN106843858B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/16Automatic learning of transformation rules, e.g. from examples
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Devices For Executing Special Programs (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明公开了一种由转换原语生成Spark代码的方法,包括步骤:步骤10:设计表示数据模型变换的转换原语语法;步骤11:输入一个数据模型变换的原语文件,作为代码转换器的输入文件;步骤12:利用Xtext实现代码生成器的文法构造,完成转换原语的语法解析;步骤13:利用Xtend实现代码生成器的转换规则,建立转换原语与Spark代码之间的映射;步骤14:将模型变换的原语文件输入代码生成器;步骤15:得到输入、输出数据类和转换规则的Spark代码;本发明将一组描述数据转换的转换原语生成具有相同转换操作的Spark代码,降低数据平台开发人员使用Spark平台的复杂性,简化数据转换过程,降低基于Spark平台的大数据转换实现成本。

Description

一种由转换原语生成Spark代码的方法
技术领域
本发明涉及一种由转换原语生成Spark代码的方法。
背景技术
数据转换是对于异构数据的常用处理方法。随着企业、组织间的紧密合作以及兼并,异构的数据信息资源广泛存在着,严重影响了部门间的信息交流。而数据转换的目标就是将异构的数据信息进行转换,并消除数据中存在的各种错误,优化数据模型,得到理想的数据模型。
Spark是现在常用的一种大数据平台,随着信息社会的高速发展,人们每天无论是生活还是工作都会产生并且接触到爆炸增长的信息量,从而使得工业界要处理的信息越来越多,也越来越复杂。传统的数据转换方法已经无法快捷高效的处理大数据的转换,因此演化出了如Spark之类的大数据平台。但是Spark平台在高效处理大数据的同时,具有一定的平台复杂性,学习成本较高,对于刚刚接触该平台的用户并不友好。
Xtext是基于eclipse的一个插件工具,利用该工具我们可以自己定义一种基于文本的领域特定语言,然后创建出自定义程序语言。这里我们通过该工具实现了转换原语的设计,并通过它产生Spark代码,从而降低基于Spark平台的大数据转换实现成本,解决在大数据平台进行数据转换复杂性较高这一问题。
发明内容
发明目的:鉴于上述问题,本发明旨在提供一个自定义转换原语生成Spark代码的方法。
技术方案:
一种由转换原语生成Spark代码的方法,包括步骤:
步骤10:设计表示数据模型变换的转换原语文法;
步骤11:输入数据变换的原语文件;原语文件是根据步骤10设计的转换原语文法设计的,包含输入数据模型,输出数据模型和转换规则的信息;
步骤12:利用Xtext对步骤11设计的原语文件进行语法分析,并得到语法分析树;
步骤13:利用Xtend根据步骤12得到的语法分析树对原语文件进行语义转换,生成对应的Spark代码。
所述步骤10的设计过程包括:
步骤20:规定转换控制层原语ExecuteTransformation用来控制整个模型转换的执行,调度ExecuteRule原语;
步骤21:规定转换控制层原语ExecuteRule用来控制一条规则的执行,调度执行层原语;
步骤22:规定执行层原语MatchPattern根据输入模式在模型中进行匹配,得到需转换的输入模型片段;
步骤23:规定执行层原语MatchObject根据某些指定条件,去查找满足条件的匹配对象;
步骤24:规定执行层原语CreateObject来创建模型对象元素;
步骤25:规定执行层原语CreateReference来创建模型关系元素;
步骤26:规定表达式计算曾原语EvaluateExpression用于进行复杂表达式计算。
所述步骤11中设计原语文件的过程包括:
步骤30:打开eclipse创建原语xml文件;
步骤31:右键点击添加ExecuteTransformation节点;
步骤32:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为input_type;
步骤33:右键点击Domain节点,添加两个inputFile节点,存放要进行转换的输入文件信息;
步骤34:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为output_type;
步骤35:右键点击Domain节点,添加一个outputFile节点,存放转换后的输出文件信息;
步骤36:右键点击ExecuteTransformation节点添加ExcuteRule节点;
步骤37:右键点击ExecuteRule节点,添加两个MatchType和一个joinKey节点,在该两个节点里添加具体的数据转换操作的规则设计;结束本次原语文件的设计。
所述步骤12的过程包括:
步骤40:根据Xtext基本语法,匹配原语文件的书写格式;
步骤41:利用正则表达式描述来匹配代码的基本语句;
步骤42:设计ExecuteTransformation语句格式,在ExecuteTransformation的语句加入若干条Domain_input,Domain_output,ExecuteRule语句;
步骤43:设计Domain_input语句格式,在Domain_input的语句中插入多条InputFile语句,在InputFile语句中存放要转换文件的配置信息;
步骤44:设计Domain_output语句格式,在Domain_output的语句中插入多条OutputData语句,在OutputData语句中存放转换后文件的配置信息;
步骤45:设计ExecuteRule语句格式,在ExecuteRule的语句中插入多条转换规则语句;
步骤46:设计具体转换规则的语句格式。
所述步骤13的实现过程:
步骤50:将原语ExucuteTranformation转化为Spark程序的执行入口,且调用输入模型和输出模型的静态方法实现输入输出;
步骤51:将原语Domain_input和Domain_output转化为对应输入和输出数据模型的类文件;
步骤52:原语ExucuteRule对应spark平台上对RDD的操作集合,组成ExucuteRule的原语分别对应spark平台上的具体操作;
步骤53:将原语MatchType中的name属性对应Spark中RDD的创建;
步骤54:将原语Filter对MatchType对应的RDD进行原语Filter定义的过滤操作,调用RDD的Filter函数;
步骤55:将原语Statistics对MatchType对应的RDD进行原语Statistics定义的统计操作;
步骤56:将原语JoinKey对spark平台上的两个RDD的连接操作,提取关键值,分别生成一个PairRDDFunctions,再进行连接。
所述步骤13中执行Spark代码转换过程如下:
步骤60:在Xtext生成的原语编辑器中,src文件夹加入设计好的原语文件;
步骤61:运行Xtend生成的转换规则;
步骤62:在src-gen文件夹中会看到具有数据转换功能的scala文件;完成Spark代码的生成。
有益效果:本发明结合模型驱动工程M2M技术,实现转换原语到Spark代码的转换,从而降低数据平台开发人员使用Spark平台的复杂性,简化数据转换过程,降低基于Spark平台的大数据转换实现成本,解决在大数据平台进行数据转换复杂性较高这一问题。
附图说明
图1为转换原语转化为Spark代码示意图。
图2为转换原语语法结构示意图。
图3为原语文件示意图。
图4为原语文件解析过程流程图。
图5为正则表达式匹配词法的设计方法示意图。
图6为ExecuteRule语句设计图。
图7为转换过程执行框架示意图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
图1所示为本方法实施的整体结构和工作原理。本方法的目的是将描述数据转换的转换原语转化为具有相同数据转换功能的Spark代码,该方法可以结合模型驱动工程M2M技术进行实现,从而降低数据平台开发人员使用Spark平台的复杂性,简化数据转换过程。如图1所示,本发明方法包括步骤:
步骤10:设计一种可以表示数据模型变换的转换原语文法;
步骤11:根据步骤10设计的转换原语文法设计数据变换的原语文件,作为代码生成器的输入文件;原语文件包含输入数据模型,输出数据模型和转换规则的信息;
步骤12:利用Xtext对步骤11设计的原语文件的语法的进行分析,检查输入的原语文件是否符合步骤10设计的转换原语文法规则;同时,Xtext工具抽象出一个语法分析树用于Xtend进行语义转换;
步骤13:利用Xtend根据步骤12得到的语法分析树对原语文件进行语义转换,生成对应的Spark代码,实现代码生成器的转换规则,建立转换原语与Spark代码之间的映射。
其中步骤10中,设计一种可以表示数据模型变换的转换原语语法,设计而成的总体关系如图2所示。设计过程包括:
步骤20:规定转换控制层原语ExecuteTransformation用来控制整个模型转换的执行,调度ExecuteRule原语;
步骤21:规定转换控制层原语ExecuteRule用来控制一条规则的执行,调度执行层原语;
步骤22:规定执行层原语MatchPattern根据输入模式在模型中进行匹配,得到需转换的输入模型片段;
步骤23:规定执行层原语MatchObject根据某些指定条件,去查找满足条件的匹配对象;
步骤24:规定执行层原语CreateObject来创建模型对象元素;
步骤25:规定执行层原语CreateReference来创建模型关系元素;
步骤26:规定表达式计算曾原语EvaluateExpression用于进行复杂表达式计算。
其中步骤11所输入的原语文件如图3所示,设计一个原语文件的过程包括:
步骤30:打开eclipse创建原语xml文件;
步骤31:右键点击添加ExecuteTransformation节点;
步骤32:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为input_type;
步骤33:右键点击Domain节点,添加两个inputFile节点,存放要进行转换的输入文件信息;
步骤34:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为output_type;
步骤35:右键点击Domain节点,添加一个outputFile节点,存放转换后的输出文件信息;
步骤36:右键点击ExecuteTransformation节点添加ExcuteRule节点;
步骤37:右键点击ExecuteRule节点,添加两个MatchType和一个joinKey节点可以在这几个节点里添加具体的数据转换操作的规则设计;
步骤38:结束本次原语文件的设计。
图4表示对原语文件的语法分析和语义转换过程,包括:
步骤40:了解Xtext基本语法,匹配原语文件的书写格式;
步骤41:利用正则表达式描述ID,INT,STRING,COMMENT等来匹配代码的基本语句,设计方法如图5;
步骤42:设计ExecuteTransformation语句格式,ExecuteTransformation的语句可以加入若干条Domain_input,Domain_output,ExecuteRule语句;设计如图6;
步骤43:设计Domain_input语句格式,在Domain_input的语句中可以插入多条InputFile语句,在InputFile语句中可以存放一些要转换文件的配置信息;
步骤44:设计Domain_output语句格式,在Domain_output的语句中可以插入多条OutputData语句,在OutputData语句中可以存放一些转换后文件的配置信息;
步骤45:设计ExecuteRule语句格式,在ExecuteRule的语句中可以插入多条转换规则语句;
步骤46:设计具体转换规则的语句格式,例如filter操作,Join操作等;
步骤47:完成Xtext实现代码生成器的文法构造。
其中步骤13中,利用Xtend生成代码生成器,建立转换原语与Spark代码之间的映射,并根据步骤12得到的语法分析树对原语文件进行语义转换,生成对应的Spark代码实现过程包括:
步骤50:将原语ExucuteTranformation转化为Spark程序的执行入口,且调用输入模型和输出模型的静态方法实现输入输出;
步骤51:将原语Domain_input和Domain_output转化为对应输入和输出数据模型的类文件;
步骤52:原语ExucuteRule对应spark平台上对RDD的操作集合,组成ExucuteRule的原语分别对应spark平台上的具体操作;
步骤53:将原语MatchType中的name属性对应Spark中RDD的创建;
步骤54:将原语Filter对MatchType对应的RDD进行原语Filter定义的过滤操作,调用RDD的Filter函数;
步骤55:将原语Statistics对MatchType对应的RDD进行原语Statistics定义的统计操作;
步骤56:将原语JoinKey对spark平台上的两个RDD的连接操作,需要提取关键值,分别生成一个PairRDDFunctions,再进行连接;
步骤57:完成Xtend实现代码生成器的转换规则。
其中步骤14和15中,其数据的转换框架如图7,具体操作包括:
步骤60:在Xtext生成的原语编辑器中,src文件夹加入设计好的原语文件;
步骤61:运行Xtend生成的转换规则;
步骤62:在src-gen文件夹中会看到具有数据转换功能的scala文件;
步骤63:完成Spark代码的生成。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (3)

1.一种由转换原语生成Spark代码的方法,其特征在于:包括步骤:
步骤10:设计表示数据模型变换的转换原语文法;
所述步骤10的设计过程包括:
步骤20:规定转换控制层原语ExecuteTransformation用来控制整个模型转换的执行,调度ExecuteRule原语;
步骤21:规定转换控制层原语ExecuteRule用来控制一条规则的执行,调度执行层原语;
步骤22:规定执行层原语MatchPattern根据输入模式在模型中进行匹配,得到需转换的输入数据模型片段;
步骤23:规定执行层原语MatchObject根据指定条件,去查找满足条件的匹配对象;
步骤24:规定执行层原语CreateObject来创建模型对象元素;
步骤25:规定执行层原语CreateReference来创建模型关系元素;
步骤26:规定表达式计算层原语EvaluateExpression用于进行复杂表达式计算;
步骤11:输入数据变换的原语文件;原语文件是根据步骤10设计的转换原语文法设计的,包含输入数据模型、输出数据模型和转换规则的信息;
所述步骤11中设计原语文件的过程包括:
步骤30:打开eclipse创建原语xml文件;
步骤31:右键点击添加ExecuteTransformation节点;
步骤32:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为input_type;
步骤33:右键点击Domain节点,添加两个inputFile节点,存放要进行转换的输入文件信息;
步骤34:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为output_type;
步骤35:右键点击Domain节点,添加一个outputFile节点,存放转换后的输出文件信息;
步骤36:右键点击ExecuteTransformation节点添加ExcuteRule节点;
步骤37:右键点击ExecuteRule节点,添加两个MatchType和一个joinKey节点,在该两个节点里添加转换规则;结束本次原语文件的设计;
步骤12:利用Xtext对步骤11设计的原语文件进行语法分析及语义转换,并得到抽象语法树;
步骤13:利用Xtend生成代码生成器,建立转换原语与Spark代码之间的映射,并根据步骤12得到的抽象语法树对原语文件进行语义转换,生成对应的Spark代码;
所述步骤13中利用Xtend生成代码生成器,建立转换原语与Spark代码之间的映射的实现过程如下:
步骤50:将原语ExucuteTranformation转化为Spark程序的执行入口,且调用输入数据模型和输出数据模型的静态方法实现输入输出;
步骤51:将原语Domain_input和Domain_output转化为对应输入数据模型和输出数据模型的类文件;
步骤52:原语ExucuteRule对应spark平台上对RDD的操作集合,组成ExucuteRule的原语分别对应spark平台上的具体操作;
步骤53:将原语MatchType中的name属性对应Spark中RDD的创建;
步骤54:将原语Filter对MatchType对应的RDD进行原语Filter定义的过滤操作,调用RDD的Filter函数;
步骤55:将原语Statistics对MatchType对应的RDD进行原语Statistics定义的统计操作;
步骤56:将原语JoinKey对spark平台上的两个RDD的连接操作,提取关键值,分别生成一个PairRDDFunctions,再进行连接。
2.根据权利要求1所述的方法,其特征在于:所述步骤12的过程包括:
步骤40:根据Xtext基本语法,匹配原语文件的书写格式;
步骤41:利用正则表达式描述来匹配代码的基本语句;
步骤42:设计ExecuteTransformation语句格式,在ExecuteTransformation的语句加入若干条Domain_input,Domain_output,ExecuteRule语句;
步骤43:设计Domain_input语句格式,在Domain_input的语句中插入多条InputFile语句,在InputFile语句中存放要转换文件的配置信息;
步骤44:设计Domain_output语句格式,在Domain_output的语句中插入多条OutputData语句,在OutputData语句中存放转换后文件的配置信息;
步骤45:设计ExecuteRule语句格式,在ExecuteRule的语句中插入多条转换规则语句;
步骤46:设计具体转换规则的语句格式。
3.根据权利要求1所述的方法,其特征在于:所述步骤13生成Spark代码过程如下:
步骤60:在Xtext生成的原语编辑器中,将步骤11设计的原语文件加入到src文件夹;
步骤61:运行Xtend生成的代码生成器;
步骤62:在src-gen文件夹中生成具有数据转换功能的scala文件;完成Spark代码的生成。
CN201611252903.4A 2016-12-30 2016-12-30 一种由转换原语生成Spark代码的方法 Active CN106843858B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611252903.4A CN106843858B (zh) 2016-12-30 2016-12-30 一种由转换原语生成Spark代码的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611252903.4A CN106843858B (zh) 2016-12-30 2016-12-30 一种由转换原语生成Spark代码的方法

Publications (2)

Publication Number Publication Date
CN106843858A CN106843858A (zh) 2017-06-13
CN106843858B true CN106843858B (zh) 2020-06-09

Family

ID=59113721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611252903.4A Active CN106843858B (zh) 2016-12-30 2016-12-30 一种由转换原语生成Spark代码的方法

Country Status (1)

Country Link
CN (1) CN106843858B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153522B (zh) * 2017-12-25 2020-05-05 南京大学 基于模型转换由midcore生成Spark和Hadoop程序代码的方法
CN110543297B (zh) * 2018-05-28 2021-03-30 北京京东尚科信息技术有限公司 用于生成源码的方法和装置
CN112269566B (zh) * 2020-11-03 2022-09-02 支付宝(杭州)信息技术有限公司 脚本生成处理方法、装置、设备及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679511A (zh) * 2015-02-10 2015-06-03 北京系统工程研究所 基于MDE模型转换的MapReduce代码生成方法
CN105335412A (zh) * 2014-07-31 2016-02-17 阿里巴巴集团控股有限公司 用于数据转换、数据迁移的方法和装置
CN106095398A (zh) * 2016-05-10 2016-11-09 深圳前海信息技术有限公司 基于dsl的大数据开发应用方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8869098B2 (en) * 2007-12-05 2014-10-21 International Business Machines Corporation Computer method and apparatus for providing model to model transformation using an MDA approach
US9361075B2 (en) * 2014-11-12 2016-06-07 International Business Machines Corporation Contraction aware parsing system for domain-specific languages

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335412A (zh) * 2014-07-31 2016-02-17 阿里巴巴集团控股有限公司 用于数据转换、数据迁移的方法和装置
CN104679511A (zh) * 2015-02-10 2015-06-03 北京系统工程研究所 基于MDE模型转换的MapReduce代码生成方法
CN106095398A (zh) * 2016-05-10 2016-11-09 深圳前海信息技术有限公司 基于dsl的大数据开发应用方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Towards a Model-Driven Design Tool for Big Data Architectures";Michele Guerriero 等;《2016 IEEE/ACM 2nd International Workshop on Big Data Software Engineering (BIGDSE)》;20160516;第1-7页 *

Also Published As

Publication number Publication date
CN106843858A (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
Moonen Generating robust parsers using island grammars
CN106843858B (zh) 一种由转换原语生成Spark代码的方法
CN108153522B (zh) 基于模型转换由midcore生成Spark和Hadoop程序代码的方法
CN111639501A (zh) 基于amsl的电网业务微服务组合方法
CN112765209A (zh) 一种数据库间的sql语句语法迁移方法及系统
Fedorchenko et al. Equivalent transformations and regularization in context-free grammars
CN113655996B (zh) 一种基于需求模型的企业级系统生成方法
WO2014040766A1 (en) Computer-implemented method for computer program translation
Manaf et al. SBVR2Alloy: an SBVR to alloy compiler
Kausch et al. An Approach for Logic-based Knowledge Representation and Automated Reasoning over Underspecification and Refinement in Safety-Critical Cyber-Physical Systems.
CN116776981A (zh) 基于大型预训练语言模型的api关系推理方法及系统
Paakki Prolog in practical compiler writing
CN111859929B (zh) 一种数据可视化方法、装置及其相关设备
Shan–shan et al. Formal Definition of Pseudo Code and Mapping Rules to Java Code
Zafar et al. Formal Modeling towards the Context Free Grammar
CN110083822B (zh) 一种从需求文本转换到SysML需求图的转换方法
Zafar et al. Syntax-tree regular expression based DFA formalconstruction
Chen et al. A Conversion Framework of the Continuous Modeling Languages Based on ANTLR4 [J]
Kiyavitskaya et al. Experimenting with Linguistic Tools for Conceptual Modelling: Quality of the models and critical features
Moser et al. Towards attribute grammar mining by symbolic execution
Shute et al. SQL Has Problems. We Can Fix Them: Pipe Syntax In SQL
Milanović et al. Bridging concrete and abstract syntaxes in model‐driven engineering: a case of rule languages
CN118151918B (zh) 基于uml模型的可信低代码开发平台及代码生成方法
Litoriya et al. Implementation of Relational Algebra Interpreter using another query language
Nagoya et al. Developing a web dictionary system using the SOFL three-step specification approach

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