[发明专利]一种基于ANTLR的复杂报表公式解析方法及装置在审
申请号: | 202011178242.1 | 申请日: | 2020-10-29 |
公开(公告)号: | CN112270175A | 公开(公告)日: | 2021-01-26 |
发明(设计)人: | 张艳清;张达;巩亚辉;赖文文 | 申请(专利权)人: | 成都四方伟业软件股份有限公司 |
主分类号: | G06F40/253 | 分类号: | G06F40/253;G06F40/205 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 610041 四川省*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 antlr 复杂 报表 公式 解析 方法 装置 | ||
本发明公开了一种基于ANTLR的复杂报表公式解析方法及装置,主要解决现有技术中存在的现有解析方式存在的表达式写法灵活性不足,逻辑不够集中及性能略有不足的问题。该一种基于ANTLR的复杂报表公式解析方法包括以下步骤:对词法进行定义,声明语言中合法的字符序列;对语法进行定义,定义语言中不同的语法结构;将定义的词法和定义的语法输入ANTLR中;待解析的公式输入步骤S3得到的ANTLR中得到语法树,遍历语法树得到解析结果。通过上述方案,本发明达到了解析公式的灵活性和扩展性及解析性能高的目的,具有很高的实用价值和推广价值。
技术领域
本发明涉及数据查询引擎领域,具体地说,是涉及一种基于ANTLR的复杂报表公式解析方法及装置。
背景技术
复杂报表的解析必然涉及到其中公式的解析,现复杂报表中公式的解析是基于Aviator语法来解析,但Aviator的语法是受限的,它不是一门完整的语言,而只是语言的一小部分集合;其扩展点在于自定义函数。
现有这种处理方式有两点不足:一,自定义的函数只能支持函数写法,形如function(arg0, arg1…),表达式写法灵活性不足;二,自定义函数通过继承实现,每个自定义函数需要一个实现类,使得表达式的结构定义散落在源代码各处,逻辑不够集中,且Aviator的实现底层是将表达式编译为字节码,交给JVM去执行,在表达式逻辑复杂的情况下性能略有不足,难以解析复杂报表中的复杂公式,需要逐一查看,影响工作效率和进度。
发明内容
本发明的目的在于提供一种基于ANTLR的复杂报表公式解析方法及装置,以解决现有解析方式存在的表达式写法灵活性不足,逻辑不够集中及性能略有不足难以解析复杂报表中复杂公式的问题。
为了解决上述问题,本发明提供如下技术方案:
一种基于ANTLR的复杂报表公式解析方法包括以下步骤:
S1、对词法进行定义,声明语言中合法的字符序列;
S2、对语法进行定义,定义语言中不同的语法结构;
S3、将步骤S1中定义的词法和步骤S2定义的语法输入ANTLR中;
S4、待解析的公式输入步骤S3得到的ANTLR中得到语法树,遍历语法树得到解析结果。
现有复杂报表公司解析使用的Aviator内建了许多函数及表达式结构,提 供了大部分运算符开箱即用的支持,包括算术操作符、关系运算符、逻辑操作 符、位运算符、正则匹配操作符、三元表达式,并且支持操作符的优先级和括 号强制优先级,用户使用门槛低,同时用户可以根据场景自定义函数,具有一 定的灵活性;但起也存在表达式写法灵活性不足,逻辑不够集中及性能略有不 足的问题,针对前述问题。
本发明通过上述方案根据ANTLR的规则自由编写词法和语法文件,并由ANTLR生成词法分析器和语法分析器,根据分析器自定义语法解析逻辑,提供了公式编写的灵活性和扩展性,后期若有语言规则的调整或添加,只需修改词法或语法文件,并重新生成分析器及补充自定义逻辑即可,支持各类公式的解析计算,能满足多种多样的公式计算场景,具有公式编写灵活、解析性能高等特点。
进一步的,步骤S1词法定义的规则为:定义词法为key:value,key是合法字符序列的名字,value为字符串和正则表达式;value也可指其它合法规则。
进一步的,步骤S2语法定义规则为:定义语法为key:expression1 | expression2| …,key为语法名称,expression为以词法名称和语法名称的组合。
进一步的,expression按照先后顺序表达优先级,先声明的expression优先级高。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都四方伟业软件股份有限公司,未经成都四方伟业软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011178242.1/2.html,转载请声明来源钻瓜专利网。