System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及大数据开发,尤其涉及一种sql语言编辑器的构建方法及装置。
技术介绍
1、在大数据飞速发展的当下,大数据行业的从业者尤其是大数据开发工作者经常需要用到简单的结构化查询语言(structured query language,sql)语句,这个时候他们就希望有一款工具能够在输入sql语句的时候,直观地将其输入的sql语句是否正确、错误的位置以及提示反馈给他,但现有的编辑器要么是根本无法做到对sql语言进行识别,要么也只是通用的对相似语法进行提示,无法精准对编辑的每种sql语言进行高亮、提示、校验以及报错,这使得经常出现因为语法错误没有及时提示而导致大量sql语句需要修改或者返工的问题,或者有些时候一些报错并不是针对当前开发的sql类型,大大降低了开发工作者的开发效率。
技术实现思路
1、本专利技术的目的在于提供一种sql语言编辑器的构建方法及装置,从而解决现有技术中编辑器无法精准对编辑的每种sql语言进行高亮、提示、校验以及报错导致的sql语句修改或返工的问题。
2、为实现上述目的,本申请采用以下技术方案:
3、本申请的一种sql语言编辑器的构建方法,包括以下步骤:
4、构建sql解析组件,所述sql解析组件用于对多种类型的sql语句进行语法分析和校验;
5、通过monaco编辑器的扩展机制集成monaco sql语言支持库,所述monaco sql语言支持库中包含若干用于特定sql语言的contribution文件和wo
6、将monaco编辑器封装为react组件,并允许其通过配置指定sql语言类型;
7、根据目标sql语言类型判断是否将所述monaco sql语言支持库集成到所述react组件中,若是,则得到目标sql语言编辑器。
8、作为优选,所述构建sql解析组件,包括:
9、创建词法文件和语法文件,并罗列基础数据类型到所述词法文件,整理对应sql语言的关键字到语法文件;
10、根据所述关键字定义词法规则,并基于所述词法规则和所述基础数据类型定义语法规则;
11、编写每条语法规则对应的sql语句,并用jest校验所述sql语句的正确性。
12、作为优选,所述构建sql解析组件,还包括:
13、构建方法抽象类basicsql,所述basicsql用于实现语法检查、词法分析、实体收集和自动补全。
14、作为优选,所述对多种类型的sql语句进行语法分析和校验,包括:
15、将输入的sql语句转换成antlr4的输入流,并根据所述输入流生成语法树;
16、遍历所述语法树,检查每句sql是否符合所述语法规则,并收集错误信息和特定实体,记录所述特定实体与其对应sql语句间的关联关系;
17、根据光标的位置和当前的语法规则,生成提示信息。
18、作为优选,所述通过monaco编辑器的扩展机制集成monaco sql语言支持库,包括:
19、为每种sql语言创建配置文件,并定义conf常量和language常量;
20、创建[sqlname].contribution.ts文件,并在所述[sqlname].contribution.ts文件中调用registerlanguage方法和setuplanguagefeatures方法以注册编辑器及调用所述配置文件;
21、从所述sql解析组件中导出[sqlname]类,并创建继承自所述sql解析组件里的basicsqlworker对应的sqlworker类。
22、作为优选,所述根据目标sql语言类型判断是否将所述monaco sql语言支持库集成到所述react组件中,若是,则得到目标sql语言编辑器,包括:
23、判断目标sql语言类型是否包含在所述monaco编辑器中,若是则通过monacoeditorwebpackplugin插件将所述contribution文件导入所述react组件中,并设置customlanguages,所述 customlanguages用于记录对应sql语言的contribution文件路径和sqlworker文件路径;
24、调用monaco sql语言支持库的languageidenum方法和setuplanguagefeatures方法来设置语言功能;
25、通过import从所述react 组件中导入预先构建的monacoeditor类组件和monacodiffeditor类组件,并将所述languageidenum方法的调用结果导入所述monacoeditor类组件或monacodiffeditor类组件中。
26、作为优选,所述方法还包括:
27、于所述目标sql语言类型不包含在所述monaco编辑器中时,通过import从所述react 组件中导入预先构建的monacoeditor类组件和monacodiffeditor类组件,并确定调用所述monacoeditor类组件或monacodiffeditor类组件。
28、一种sql语言编辑器的构建装置,包括:
29、第一构建模块,用于构建sql解析组件,所述sql解析组件用于对多种类型的sql语句进行语法分析和校验;
30、第二构建模块,用于通过monaco编辑器的扩展机制集成monaco sql语言支持库,所述monaco sql语言支持库中包含若干用于特定sql语言的contribution文件和worker文件;
31、封装模块,用于将monaco编辑器封装为react组件,并允许其通过配置指定sql语言类型;
32、集成模块,用于根据目标sql语言类型判断是否将所述monaco sql语言支持库集成到所述react组件中,若是,则得到目标sql语言编辑器。
33、一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如上述中任一项所述的一种sql语言编辑器的构建方法。
34、一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现如上述中任一项所述的一种sql语言编辑器的构建方法。
35、本专利技术具有如下有益效果:
36、本申请通过将每个组件都单独导出,使得功能成功解耦,从而在进行开发时只需按照目标引入所需的语言包即可,不会无谓的增加依赖包的体积,简单方便。
本文档来自技高网...【技术保护点】
1.一种SQL语言编辑器的构建方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种SQL语言编辑器的构建方法,其特征在于,所述构建SQL解析组件,包括:
3.根据权利要求2所述的一种SQL语言编辑器的构建方法,其特征在于,所述构建SQL解析组件,还包括:
4.根据权利要求3所述的一种SQL语言编辑器的构建方法,其特征在于,所述对多种类型的SQL语句进行语法分析和校验,包括:
5.根据权利要求4所述的一种SQL语言编辑器的构建方法,其特征在于,所述通过Monaco编辑器的扩展机制集成Monaco SQL语言支持库,包括:
6.根据权利要求5所述的一种SQL语言编辑器的构建方法,其特征在于,所述根据目标SQL语言类型判断是否将所述Monaco SQL语言支持库集成到所述React组件中,若是,则得到目标SQL语言编辑器,包括:
7.根据权利要求6所述的一种SQL语言编辑器的构建方法,其特征在于,所述方法还包括:
8.一种SQL语言编辑器的构建装置,其特征在于,包括:
9.
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序使计算机执行时实现如权利要求1~7中任一项所述的一种SQL语言编辑器的构建方法。
...【技术特征摘要】
1.一种sql语言编辑器的构建方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种sql语言编辑器的构建方法,其特征在于,所述构建sql解析组件,包括:
3.根据权利要求2所述的一种sql语言编辑器的构建方法,其特征在于,所述构建sql解析组件,还包括:
4.根据权利要求3所述的一种sql语言编辑器的构建方法,其特征在于,所述对多种类型的sql语句进行语法分析和校验,包括:
5.根据权利要求4所述的一种sql语言编辑器的构建方法,其特征在于,所述通过monaco编辑器的扩展机制集成monaco sql语言支持库,包括:
6.根据权利要求5所述的一种sql语言编辑器的构建方法,其特征在于,所述根据目...
【专利技术属性】
技术研发人员:宁海元,徐晓琪,赵鹏,闵佳,赵倩,
申请(专利权)人:杭州玳数科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。