一种基于DSL的声明式可视化图表开发方法及系统技术方案

技术编号:34053650 阅读:15 留言:0更新日期:2022-07-06 16:26
本发明专利技术公开了一种基于DSL的声明式可视化图表开发方法及系统,所述方法包括以下步骤:步骤S110,使用DSL声明图表配置;基于JSON语法描述可视化图表的配置项及参数,并指定渲染可视化图表所使用的第三方可视化图表库或可视化引擎;步骤S120,解析图表配置为转译语法;通过DSL解析器将JSON格式的图表配置转译为指定的第三方可视化图表库或可视化引擎的语法和API方法;步骤S130,调用API方法创建图表,将最终的AST抽象语法树输出为宿主语言,生成echarts图表库的语法和API方法。本发明专利技术的方法和系统能够降低可视化图表的开发难度,开发者不需要学习和掌握新的语法,便能够使用第三方可视化图表库或可视化引擎开发可视化图表。可视化图表库或可视化引擎开发可视化图表。可视化图表库或可视化引擎开发可视化图表。

A declarative visual chart development method and system based on DSL

【技术实现步骤摘要】
一种基于DSL的声明式可视化图表开发方法及系统


[0001]本专利技术涉及计算机及数据处理
,特别涉及一种基于DSL的声明式可视化图表开发方法及系统。

技术介绍

[0002]数据可视化旨在借助图形化手段,以一种更直观、高效的方式呈现数据,可视化图表是数据可视化中最常用的一种表现形式。然而,将数据转换为可视化图表的过程会涉及到数据分析、数据处理、数据映射、图形绘制、图形属性、计算机视觉以及用户界面等诸多领域的专业知识,导致可视化图表的开发门槛和成本极高。现有的解决方法基本上都是:使用第三方可视化图表库或可视化引擎(如:ECharts、G2/G2Plot、D3.js等),通过调用现成的API方法完成图形绘制、图表配置以及数据映射,从而将数据转换为可视化图表进行展示。但这类方式仍有不足:一方面,由于第三方可视化图表库或可视化引擎都是基于图表分类和图形语法构建,需要开发者先学习和掌握新的语法之后,才能通过调用API方法将数据转换为可视化图表。
[0003]另一方面,第三方可视化图表库或可视化引擎的功能特性和应用场景不同,有时候需要在一个复杂的项目中引入多种不同的第三方可视化图表库或可视化引擎,以实现个性化的可视化图表,造成业务代码中混合多种不同的语法,导致整个项目难以维护。

技术实现思路

[0004]针对现有技术存在的问题,本专利技术的目的在于提供一种系统及方法,能够降低可视化图表的开发难度,开发者不需要学习和掌握新的语法,便能够使用第三方可视化图表库或可视化引擎开发可视化图表;同时,在项目中引入多种不同的可视化图表库或可视化引擎时,可以使用统一的语法进行可视化图表的开发。
[0005]为实现上述目的,本专利技术提供一种基于DSL的声明式可视化图表开发方法,所述方法包括以下步骤:步骤S110,使用DSL声明图表配置;基于JSON语法描述可视化图表的配置项及参数,并指定渲染可视化图表所使用的第三方可视化图表库或可视化引擎;步骤S120,解析图表配置为转译语法;通过DSL解析器将JSON格式的图表配置转译为指定的第三方可视化图表库或可视化引擎的语法和API方法;步骤S130,调用API方法创建图表,将最终的AST抽象语法树输出为宿主语言,生成echarts图表库的语法和API方法。
[0006]进一步,在步骤S110中,由于第三方可视化图表库或可视化引擎的图表分类和图形语法存在差异,因此使用DSL描述图表配置,包括可视化图表对象、规则和运行方式;将可视化图表构成抽象为图表容器、数据映射、图形样式、图表组件、图表交互和图表事件,使用JSON对象进行描述。
[0007]进一步,每个JSON对象包含键值对、对象或数组,用于描述可视化图表的配置;所
述图表容器包含图表宽度、图表高度、图表自适应、画布内边距、图表渲染方式和API方法。
[0008]进一步,在步骤S120中,通过DSL解析器将JSON格式的图表配置转译为指定的第三方可视化图表库或可视化引擎的语法和API方法;DSL解析器接收JSON格式的图表配置作为第一个参数,并将可选的解析配置作为第二个参数,最终返回图表配置的抽象语法树。
[0009]进一步,在需要兼容多种不同的可视化图表库或可视化引擎的情况下,对节点进行操作将其转译为使用的可视化图表库或可视化引擎的语法和API方法。
[0010]进一步,步骤S120中,还包括DSL解析器接收图表配置,对源代码进行语法检测,验证通过后进行解析并返回图表配置的AST抽象语法树;得到图表配置的AST抽象语法树后,根据parserOptions传入的解析配置将图表配置的抽象语法树转译为第三方可视化图表库或可视化引擎的语法和API方法,使用echarts图表库作为转译语言;转译抽象语法树的过程如下:通过遍历抽象语法树节点,对节点属性进行添加、删除和替换操作来实现;如果需要兼容多种不同的可视化图表库或可视化引擎,对节点进行操作将其转译为使用的可视化图表库或可视化引擎的语法和API方法;DSL解析器得到图表配置的AST抽象语法树后,对smooth节点进行操作,为其添加属性值为series的父节点,进行语法转译;通过DSL解析器转换完成后的AST抽象语法树;由此得到以echarts图表库作为转译语言的DSL图表配置的AST抽象语法树。
[0011]进一步,步骤S120中,通过DSL解析器将JSON格式的图表配置转译为指定的第三方可视化图表库或可视化引擎的语法和API方法。
[0012]进一步,其中DSL解析器的具体执行过程包括以下步骤:S210,DSL解析器进行词法分析,将JSON格式的图表配置转换成一个标识数组,用以描述DSL源代码的语法;S220,DSL解析器进行语法分析,接收步骤S210分析出来的标识数组并将它们组合成一个描述DSL图表配置各部分之间关系的中间表达形式,形成AST抽象语法树;AST中每一层描述结构的对象叫做节点;S230,DSL解析器进行代码转换,根据parserOptions解析配置,对AST抽象语法树中的节点进行添加、删除、替换操作,将其转换为宿主语言对应的AST抽象语法树;S240,DSL解析器基于转换后AST抽象语法树生成目标代码。
[0013]进一步,步骤S240中,还包括,通过自定义一个“代码生成器”,递归地调用自身将AST抽象语法树中的每一个节点打印出来,最终形成一个巨大的字符串;由此,DSL解析器完成针对DSL图表配置的代码转译,通过词法分析、语法分析、代码转换和代码生成,将JSON格式的图表配置转译为第三方可视化图表库或可视化引擎的语法和API方法。
[0014]另一方面,本专利技术提供一种基于DSL的声明式可视化图表开发系统,所述系统应用根据本专利技术的的基于DSL的声明式可视化图表开发方法。
[0015]本专利技术的基于DSL的声明式可视化图表开发技术,基于标准的JSON语法和词汇,就可以方便地使用DSL声明图表配置,开发者不需要了解第三方可视化图表库或可视化引擎的语法和API方法,降低了可视化图表的开发难度,同时也节约了开发时间和成本。
附图说明
[0016]图1示出了根据本专利技术实施例中使用DSL开发可视化图表的流程图;
图2示出了根据本专利技术实施例中基于DSL开发可视化图表的架构图;图3示出了根据本专利技术实施例中DSL解析器的工作流程图。
具体实施方式
[0017]下面将结合附图,对本专利技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0018]在本专利技术的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于DSL的声明式可视化图表开发方法,其特征在于,所述方法包括以下步骤:步骤S110,使用DSL声明图表配置;基于JSON语法描述可视化图表的配置项及参数,并指定渲染可视化图表所使用的第三方可视化图表库或可视化引擎;步骤S120,解析图表配置为转译语法;通过DSL解析器将JSON格式的图表配置转译为指定的第三方可视化图表库或可视化引擎的语法和API方法;步骤S130,调用API方法创建图表,将最终的AST抽象语法树输出为宿主语言,生成echarts图表库的语法和API方法。2.根据权利要求1所述的一种基于DSL的声明式可视化图表开发方法,其特征在于,在步骤S110中,由于第三方可视化图表库或可视化引擎的图表分类和图形语法存在差异,因此使用DSL声明图表配置,包括可视化图表对象、规则和运行方式;将可视化图表构成抽象为图表容器、数据映射、图形样式、图表组件、图表交互和图表事件,使用JSON对象进行描述。3.根据权利要求2所述的一种基于DSL的声明式可视化图表开发方法,其特征在于,每个JSON对象包含键值对、对象或数组,用于描述可视化图表的配置;所述图表容器包含图表宽度、图表高度、图表自适应、画布内边距、图表渲染方式和API方法。4.根据权利要求1

3任一项所述的一种基于DSL的声明式可视化图表开发方法,其特征在于,在步骤S120中,通过DSL解析器将JSON格式的图表配置转译为指定的第三方可视化图表库或可视化引擎的语法和API方法;DSL解析器接收JSON格式的图表配置作为第一个参数,并将可选的解析配置作为第二个参数,最终返回图表配置的抽象语法树。5.根据权利要求4所述的一种基于DSL的声明式可视化图表开发方法,其特征在于,在需要兼容多种不同的可视化图表库或可视化引擎的情况下,对节点进行操作将其转译为使用的可视化图表库或可视化引擎的语法和API方法。6.根据权利要求5所述的一种基于DSL的声明式可视化图表开发方法,其特征在于,步骤S120中,还包括DSL解析器接收图表配置,对源代码进行语法检测,验证通过后进行解析并返回图表配置的AST抽象语法树;得到图表配置的AST抽象语法树后,根据parserOptions传入的解析配置将图表配置的抽象语法树转译为第三方可视化图表库或可视化引擎的语法和...

【专利技术属性】
技术研发人员:王毅
申请(专利权)人:杭州比智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1