CN104298657A - 基于表达式的评价指标解析*** - Google Patents
基于表达式的评价指标解析*** Download PDFInfo
- Publication number
- CN104298657A CN104298657A CN201410490189.7A CN201410490189A CN104298657A CN 104298657 A CN104298657 A CN 104298657A CN 201410490189 A CN201410490189 A CN 201410490189A CN 104298657 A CN104298657 A CN 104298657A
- Authority
- CN
- China
- Prior art keywords
- evaluation index
- expression formula
- evaluation
- expression
- analysis
- 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.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明的目的在于提供一种基于表达式的评价指标解析***,包括:评价指标表达式语法定义模块、表达式配置模块和表达式解析模块三部分。该***能够实现将评价指标的评价逻辑交给用户来设置,使得用户能及时的对项目评价指标的变更,同时***又能实时的解析评价指标,及时的使用新的评价标准逻辑进行项目评价。
Description
技术领域
本发明涉及一套基于表达式的评价指标解析***,尤其是用户能按照评价标准文档灵活的设置评价指标表达式,同时***使用评价表达式中的逻辑对评价指标进行自动计算,获取评价结果。
背景技术
目前,绝大部分对评价标准的解析都是不够灵活的,由于评价指标不是一成不变的,通常每隔一段时间就需要修编,针对这种情况***必须要提供评价指标的修改,同时还要求***能够识别并解析用户设置的评价指标两大功能,只有这样才能达到灵活自动评价的目的。目前少数的类似***中,在响应评价指标变更方面都做得不好,通常都是将评价指标的评价逻辑写入在代码中,后期用户难以调整评价指标,无法响应评价指标的变更,而另一种改进的办法是使用存储过程来实现评价指标的解析,这种解决方案虽然带有一定的灵活性,但是客户还是不能独立的完成评价指标的变更,需要把新的评价指标给开发人员,然后由开发人员去调整存储过程。这两种方案都只实现***识别评价指标的功能,而用户修改评价指标的功能都是缺失的。造成这一问题的原因是在技术上难以实现一套既可以简单的将评价指标的文字指标转换成计算机可识别的指标,用户容易上手,又足有灵活的在线修改评价指标的方案。
发明内容
为了克服现有的解决方案无法灵活编辑评价指标,本发明的目的在于提供一种简便的、可以由用户设置评价标准的基于表达式的评价指标解析***,该***能够实现将评价指标的评价逻辑交给用户来设置,使得用户能及时的对项目评价指标的变更,同时***又能实时的解析评价指标,及时的使用新的评价标准逻辑进行项目评价。
本发明通过如下技术方案实现上述发明目的:
一种基于表达式的评价指标解析***,包括:评价指标表达式语法定义模块、表达式配置模块和表达式解析模块三部分;
所述评价指标表达式语法定义模块,使用开源语法分析器ANTLR—AnotherTool for Language Recognition(以下简称ANTLR工具),定义了一套解析评价指标表达式的语法规则。
所述评价指标表达式语法定义模块,包含一个供ANTLR工具使用的语法规则文件,语法规则文件中使用ANTLR工具文法定义中的词法定义规则,定义***中出现的所有关键字、操作符及可识别的数据类型。同时在规则文件中通过ANTLR工具文法定义中的语法定义规则及语法规则的嵌套来定义表达式语法中操作符的结构及操作符的优先级;
所述评价指标表达式语法定义模块使用语法规则文件,由ANTLR工具生成词法分析类(ExpressionLexer)和语法分析类(ExpressionParser)。
所述表达式配置模块,用于配置和存储评价指标的评价表达式,所述配置和存储评价指标的评价表达式的过程是:
提供输入界面给用户输入评价指标表达式;
获取用户输入的评价指标表达式后,把评价指标表达式保存到数据库中。
所述评价表达式解析模块,从数据库中取出评价指标的评价表达式,调用所述评价指标表达式语法定义模块的ANTRL工具自动生成的词法分析类(ExpressionLexer)和语法分析类(ExpressionParser)对评价表达式进行词法分析和语法分析;所述词法分析和语法分析的具体过程是:
使用词法分析类(ExpressionLexer)结合ANTLR的提供的公共令牌流类(CommonTokenStream)对评价指标表达式进行词法分析,然后把结果传递给语法分析类(ExpressionParser)的表达式类(Expression)方法进行语法分析。
所述评价表达式解析模块,在词法分析和语法分析后,使用ANTRL工具返回评价指标表达式的抽象语法树。再按照后序遍历的方法遍历抽象语法树,并解析语法树种的每一个节点,最后取得表达式的解析结果。
本发明对比现有技术,有如下优点:
1.用户能够自主、灵活地、随时地配置***的评价指标的评价逻辑。本发明定义了一套简单容易上手的表达式语法,用户可以很容易的把文字的评价指标,使用***的表达式语法配置出来。
2.***可以及时的响应评价指标的变化,本发明在数据库中存储的是评价指标的评价逻辑,即用户定义的评价指标表达式,这种存储,使得***及时的响应评价指标的变化,同时使得评价指标的评价逻辑不受评价数据的影响。
3.快速即时的获取评价结果。本发明是通过动态解析评价表达式来获取评价指标的评价结果。评价表达式在项目评价的过程中,进行动态解析,并把实时的评价数据代入解析过程,从而快速计算出实时评价结果。
附图说明
图1为固定资产投资项目后评价工作平台建设项目中的评价指标解析***使用流程图;
图2为固定资产投资项目后评价工作平台建设项目中的评价指标解析***的编辑评价标准的界面图;
图3为表达式抽象语法树;
图4为固定资产投资项目后评价工作平台建设项目中的评价指标解析***的项目评价结果界面图。
具体实施方式
本发明的实施方式是提供基于规则的可定义表达式的解析***,如图1所示,包含评价指标表达式语法定义模块、评价指标表达式配置模块和评价指标表达式解析模块三部分。
评价指标表达式语法定义模块,使用ANTLR工具的文法定义中的词法定义规则,定义***中出现的所有关键字、操作符及可识别的数据类型。通过文法定义中的语法定义规则及语法规则的嵌套来定义表达式语法中合法表达式及操作符的优先级。
***中通过ANTLR工具定义的部分表达式语法规则如下所示:
评价指标表达式语法定义模块,通过使用这些定义后的文法规则,使ANTLR工具自动生成对应的词法分析类(ExpressionLexer)和语法分析类(ExpressionParser)。
评价表达式配置模块,用于输入和存储评价指标的评价表达式。评价表达式配置模块提供配置页面(如图2所示)让用户输入评价表达式,在获取了用户输入的评价指标表达式后,把其保存到数据库中。
用户配置的评价指标表达式如下所示:
文字评价标准:负荷预测准确率=1-|规划中负荷预测值-实际负荷值|/实际负荷值
配置和存储的评价指标表达式:1-ABS([负荷预测值]-[实际负荷值])/[实际负荷值]
评价表达式解析模块,用于在接收到解析评价指标式请求后,从数据库中取出评价指标的评价表达式,使用词法分析类(ExpressionLexer)结合ANTLR的公共令牌流程类(CommonTokenStream)对评价指标表达式进行词法分析,然后把结果传递给,语法分析类(ExpressionParser)类的表达式(Expression)方法进行语法分析,最后得到评价指标表达式的抽象语法树
如图3所示为表达式抽象语法树示例,获取抽象语法树后按照后序遍历的方法遍历抽象语法树,并解析语法树种的每一个节点。解析步骤如下:
步骤1:获取当前语法树的根节点,然后判断当前节点的类型,如果是值类型,执行步骤2.其他的类型执行步骤3。
步骤2:根据当前语法树的根节点的所属值类型,把根节点的值转换对应的数值。然后把值返回。
步骤3:根据当前语法树的根节点的逻辑操作类型,然后对根节点下的每个子节点,执行步骤1。
步骤4:获取的所有子节点的值后,根据根节点的逻辑操作类型,对子节点的值进行逻辑运算,获取根节点的结果,然后根节点的计算结果。
通过使用递归的方式,最后取得表达式的解析结果,如图4所示。
本***通过结合评价指标表达式语法定义,评价表达式配置和评价表达式解析的功能,定义了一套用户容易理解和学习上手的表达式语法,并提供三个界面让用户自主输入评价指标的评价指标表达式,及其设计的基础数据,然后通过计算***的快速运算能力,在执行项目评价的时候,对评价指标的评价指标表达式进行即时的解析,得到按照用户设定的评价逻辑执行的评价结果。同时***通过支持引入变量的概念,在进行项目评价的时候,可以把最新的数据传给表达式,从而达到使用最新数据进行评价的目的。
本发明的实施方式不限于此,在本发明上述基本技术思想前提下,按照本领域的普通技术知识和惯用手段对本发明内容所做出其它多种形式的修改、替换或变更,均落在本发明权利保护范围之内。
Claims (2)
1.一种基于表达式的评价指标解析***,其特征在于包括:评价指标表达式语法定义模块、表达式配置模块和表达式解析模块三部分;
所述评价指标表达式语法定义模块,包含一个供ANTLR工具使用的语法规则文件,语法规则文件中使用ANTLR工具文法定义中的词法定义规则,定义***中出现的所有关键字、操作符及可识别的数据类型;同时在规则文件中通过ANTLR工具文法定义中的语法定义规则及语法规则的嵌套来定义表达式语法中操作符的结构及操作符的优先级;所述评价指标表达式语法定义模块使用语法规则文件,由ANTLR工具生成词法分析类(ExpressionLexer)和语法分析类(ExpressionParser);
所述表达式配置模块,用于配置和存储评价指标的评价表达式,所述配置和存储评价指标的评价表达式的过程是:
提供输入界面给用户输入评价指标表达式;
获取用户输入的评价指标表达式后,把评价指标表达式保存到数据库中;
所述评价表达式解析模块,从数据库中取出评价指标的评价表达式,调用所述评价指标表达式语法定义模块的ANTRL工具自动生成的词法分析类(ExpressionLexer)和语法分析类(ExpressionParser)对评价表达式进行词法分析和语法分析;
所述评价表达式解析模块,在词法分析和语法分析后,使用ANTRL工具返回评价指标表达式的抽象语法树;再按照后序遍历的方法遍历抽象语法树,并解析语法树种的每一个节点,最后取得表达式的解析结果。
2.根据权利要求1所述的***,其特征在于:所述词法分析和语法分析的具体过程是:
使用词法分析类结合ANTLR的提供的公共令牌流类(CommonTokenStream)对评价指标表达式进行词法分析,然后把结果传递给语法分析类的表达式类(Expression)方法进行语法分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410490189.7A CN104298657A (zh) | 2014-09-23 | 2014-09-23 | 基于表达式的评价指标解析*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410490189.7A CN104298657A (zh) | 2014-09-23 | 2014-09-23 | 基于表达式的评价指标解析*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104298657A true CN104298657A (zh) | 2015-01-21 |
Family
ID=52318386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410490189.7A Pending CN104298657A (zh) | 2014-09-23 | 2014-09-23 | 基于表达式的评价指标解析*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104298657A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376220A (zh) * | 2018-12-12 | 2019-02-22 | 北京字节跳动网络技术有限公司 | 用于获取信息的方法和装置 |
CN109656453A (zh) * | 2018-12-20 | 2019-04-19 | 树根互联技术有限公司 | 规则编辑方法、装置和设备 |
CN110826314A (zh) * | 2019-11-07 | 2020-02-21 | 中金智汇科技有限责任公司 | 一种规则解析方法、装置、电子设备及存储介质 |
CN112270175A (zh) * | 2020-10-29 | 2021-01-26 | 成都四方伟业软件股份有限公司 | 一种基于antlr的复杂报表公式解析方法及装置 |
-
2014
- 2014-09-23 CN CN201410490189.7A patent/CN104298657A/zh active Pending
Non-Patent Citations (4)
Title |
---|
BRUCE008: "ANTLR学习", 《HTTP://BRUCE008.ITEYE.COM/BLOG/1546949》 * |
NOVELLY: "基于antlr的表达式解析器", 《HTTP://BLOG.CSDN.NET/NOVELLY/ARTICLE/DETAILS/13886775》 * |
TUBOCURARINE: "ANTLR——语法", 《HTTP://BLOG.CHINAUNIX.NET/UID-20606073-ID-1916338.HTML》 * |
王建光等: "一种可扩展的表达式解析及计算方法", 《WWW.IBM.COM/DEVELOPERWORKS/CN/JAVA/J-LO-EXPRESSPARSE/#ICOMMENTS》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376220A (zh) * | 2018-12-12 | 2019-02-22 | 北京字节跳动网络技术有限公司 | 用于获取信息的方法和装置 |
CN109376220B (zh) * | 2018-12-12 | 2020-12-25 | 北京字节跳动网络技术有限公司 | 用于获取信息的方法和装置 |
CN109656453A (zh) * | 2018-12-20 | 2019-04-19 | 树根互联技术有限公司 | 规则编辑方法、装置和设备 |
CN110826314A (zh) * | 2019-11-07 | 2020-02-21 | 中金智汇科技有限责任公司 | 一种规则解析方法、装置、电子设备及存储介质 |
CN110826314B (zh) * | 2019-11-07 | 2023-08-22 | 中金智汇科技有限责任公司 | 一种规则解析方法、装置、电子设备及存储介质 |
CN112270175A (zh) * | 2020-10-29 | 2021-01-26 | 成都四方伟业软件股份有限公司 | 一种基于antlr的复杂报表公式解析方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109343857B (zh) | 线上部署机器学习模型的方法、设备和存储介质 | |
CN106970819B (zh) | 一种基于prdl规则描述语言的c程序代码规范检查装置 | |
US20160252890A1 (en) | Method for searching cross-regional power supply area based on cim model and system thereof | |
CN108984155B (zh) | 数据处理流程设定方法和装置 | |
CN106610999A (zh) | 查询处理方法和装置 | |
CN104035754A (zh) | 一种基于xml的自定义代码生成方法及生成器 | |
CN105706092B (zh) | 四值模拟的方法和*** | |
CN108255837B (zh) | 一种sql解析器及方法 | |
CN104298657A (zh) | 基于表达式的评价指标解析*** | |
CN101859303A (zh) | 元数据管理方法及管理*** | |
JP2019133622A (ja) | Apiパラメータのマッピング | |
CN105446743A (zh) | 一种自动生成sql语句的***及方法 | |
CN104391895A (zh) | 一种基于云计算的sql语句处理*** | |
CN106383701A (zh) | 基于通用多协议数据访问接口技术的数据服务*** | |
CN103902269A (zh) | 一种通过xml文件生成mib文件的***及方法 | |
CN111124379A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN104866310A (zh) | 知识数据的处理方法和*** | |
CN108766507A (zh) | 一种基于CQL与标准信息模型openEHR的临床质量指标计算方法 | |
CN107992324A (zh) | 一种基于约束求解的代码搜索方法 | |
André et al. | Translating UML state machines to coloured Petri nets using Acceleo: A report | |
CN108008947B (zh) | 一种编程语句的智能提示方法、装置、服务器及存储介质 | |
CN101727451B (zh) | 信息提取方法和装置 | |
CN117112608A (zh) | 一种基于Antlr4的数据库语句转换方法及装置 | |
CN114064601A (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN104090895B (zh) | 获取基数的方法、装置、服务器及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150121 |