一种指标计算的方法及指标计算器的制造方法

文档序号:6633267阅读:266来源:国知局
一种指标计算的方法及指标计算器的制造方法
【专利摘要】本发明提供了一种指标计算的方法及指标计算器。指标计算方法包括接收第一指标;解析所述第一指标,得到包括多个指标指令的第一指标指令集,所述第一指标指令集中的多个指标指令有执行顺序;确定所述第一指标指令集中的指标指令的类型及与所述类型对应的执行方式;按照所述执行顺序依次以所述确定的执行方式执行所述第一指标指令集中的多个指标指令。本发明在计算指标时,解析指标生成指令集并根据指令类型和顺序进行计算的方式,在指标有所改动时,输入新的指标,对该新的指标解析并计算。本发明不需要因为新的指标公式不同而重新定义每个运算节点并生成新的计算模型。因此,本发明提供的指标计算方法及指标计算器简便且更具有可用性。
【专利说明】一种指标计算的方法及指标计算器

【技术领域】
[0001] 本发明涉及指标计算,特别是涉及一种指标计算的方法及指标计算器。

【背景技术】
[0002] 指标是说明总体数量特征的概念,属于统计学的概念。
[0003] 在指标计算领域存在大量的复杂计算,为简化公式,经常需要在公式中应用一些 功能函数,例如,求最大值,最小值,取相反数,排名,逻辑判断等。同时,对公式进行修改或 者增加新的功能函数,也是指标计算领域所需要的。
[0004] 为实现复杂的指标计算,目前的技术方案是对一个具体指标的计算模型从根指标 运算节点开始,由上至下递归定义,形成树形结构的计算关系。在每个运算节点都需要定义 该节点的函数并生成相应的执行方案。这样的技术方案操作比较繁琐,不具有可用性。


【发明内容】

[0005] 本发明的目的是提供一种指标计算方法及指标计算器,以简化指标计算的计算模 型,提高其可用性。
[0006] -种指标计算的方法,包括:
[0007] 接收第一指标;
[0008] 解析所述第一指标,得到包括多个指标指令的第一指标指令集,所述第一指标指 令集中的多个指标指令有执行顺序;
[0009] 确定所述第一指标指令集中的指标指令的类型及与所述类型对应的执行方式;
[0010] 按照所述执行顺序依次以所述确定的执行方式执行所述第一指标指令集中的多 个指标指令。
[0011] 优选地,所述确定所述第一指标指令集中的指标指令的类型包括:
[0012] 确定所述第一指标指令集中的指令为基础指令;
[0013] 确定所述第一指标指令集中的指令为数据指令;或者
[0014] 确定所述第一指标指令集中的指令为扩展指令。
[0015] 优选地,所述确定所述第一指标指令集中的指标指令的类型为基础指令时,所述 以所述确定的执行方式执行所述第一指标指令集中的多个指标指令包括:
[0016] 调用所述指令对应的函数。
[0017] 优选地,所述确定所述第一指标指令集中的指标指令的类型为数据指令时,所述 以所述确定的执行方式执行所述第一指标指令集中的多个指标指令包括:
[0018] 获取所述第一指标的数据。
[0019] 优选地,所述确定所述第一指标指令集中的指标指令的类型为扩展指令时,所述 以所述确定的执行方式执行所述第一指标指令集中的多个指标指令包括:
[0020] 读取第二指标对应的第二指标执行指令集,
[0021] 其中,所述第二指标为所述扩展指令调用的指标;
[0022] 执行所述第二指标指令集的指令并返回结果。
[0023] 优选地,所述函数的生成方法包括:
[0024] 确定所述函数的函数名及参数个数,写出函数声明;
[0025] 将所述函数声明字符解析成函数符号;
[0026] 将所述函数符号解析成函数语法树;
[0027] 遍历所述函数语法树并进行计数;
[0028] 在所述函数语法树的每个节点生成对应的函数指令和函数执行顺序号,形成函数 指令集;
[0029] 存储所述函数名和所述函数指令集。
[0030] 优选地,所述接收第一指标包括:
[0031] 接收文本输入的所述第一指标;或
[0032] 接收公式编辑器输入的所述第一指标。
[0033] 优选地,所述解析所述第一指标,得到包括多个指标指令的第一指标指令集包 括:
[0034] 将所述第一指标的字符解析成第一指标符号;
[0035] 将所述第一指标符号解析成第一指标语法树;
[0036] 遍历所述第一指标语法树;
[0037] 在所述第一指标抽象语法树的每个节点生成对应的第一指标指令和第一指标执 行顺序号,形成所述第一指标指令集;
[0038] 存储所述第一指标指令集。
[0039] 一种指标计算器,包括:
[0040] 接收模块,用于接收第一指标;
[0041] 与所述接收模块相连的解析模块,用于解析所述第一指标,得到包括多个指标指 令的第一指标指令集,所述第一指标指令集中的多个指标指令有执行顺序;
[0042] 与所述解析模块相连的指令确认模块,用于确定所述第一指标指令集中的指标指 令的类型及与所述类型对应的执行方式;
[0043] 与所述指令确认模块相连的执行模块,用于按照所述执行顺序依次以所述确定的 执行方式执行所述第一指标指令集中的多个指标指令。
[0044] 优选地,所述解析模块包括:
[0045] 指标词法解析单元,用于将所述第一指标的字符解析成第一指标符号;
[0046] 与所述指标词法解析单元相连的指标语法解析单元,用于将所述第一指标符号解 析成第一指标语法树;
[0047] 与所述指标语法解析单元相连的指令生成单元,用于遍历所述第一指标语法树;
[0048] 与所述指令生成单元相连的指令集生成单元,用于在所述第一指标抽象语法树的 每个节点生成对应的第一指标指令和第一指标执行顺序号,形成所述第一指标指令集; [0049] 与所述指令集生成单元相连的指令集存储单元,用于存储所述第一指标指令集。
[0050] 优选地,所述指令确认模块包括:
[0051] 与所述解析模块相连的第一指令确认单元,用于确定所述第一指标指令集中的指 令为基础指令;
[0052] 与所述解析模块相连的第二指令确认单元,用于确定所述第一指标指令集中的指 令为数据指令;
[0053] 与所述解析模块相连的第三指令确认单元,确定所述第一指标指令集中的指令为 扩展指令。
[0054] 优选地,所述执行模块包括:
[0055] 与所述第一指令确认单元相连的第一执行单元,用于调用所述指令对应的函数;
[0056] 与所述第二指令确认单元相连的第二执行单元,用于获取所述第一指标的数据;
[0057] 与所述第三指令确认单元相连的第三执行单元,用于读取第二指标对应的第二指 标执行指令集,
[0058] 其中,所述第二指标为所述扩展指令调用的指标,
[0059] 执行所述第二指标指令集的指令并返回结果。
[0060] 优选地,还包括与所述执行模块相连的函数生成模块,所述函数生成模块包括
[0061] 函数确认单元,用于确定所述函数的函数名及参数个数,写出函数声明;
[0062] 与所述函数确认单元相连的函数词法解析单元,用于将所述函数声明字符解析成 函数符号;
[0063] 与所述函数词法解析单元相连的函数语法解析单元,用于将所述函数符号解析成 函数语法树;
[0064] 与所述函数语法解析单元相连的函数指令生成单元,用于遍历所述函数语法树并 进行计数;
[0065] 与所述函数指令生成单元相连的函数指令集生成单元,用于在所述函数语法树的 每个节点生成对应的函数指令和函数执行顺序号,形成函数指令集;
[0066] 与所述函数指令集生成单元相连的函数存储单元,用于存储所述函数名和所述函 数指令集。
[0067] 优选地,所述接收模块包括:
[0068] 文本输入单元和/或公式编辑器。
[0069] 因此,本发明具有如下有益效果:
[0070] 本发明在计算指标时,首先解析该指标,生成包含有顺序的多个指标指令的指标 指令集。其次确定所述执行指令集中的指令类型和与所述类型对应的执行方式,最后并根 据不同的指令类型和指令顺序执行不同的操作。这样的解析指标生成指令集并根据指令类 型和顺序进行计算的方式,在指标有所改动时,输入新的指标,对该新的指标解析并计算。 本发明不需要因为新的指标公式不同而需要重新定义每个运算节点并生成新的计算模型。 因此,本发明提供的指标计算方法及指标计算器简便且更具有可用性。

【专利附图】

【附图说明】:
[0071] 图1为本发明提供的一种总的指标计算方法流程图;
[0072] 图2为本发明提供的一种具体的指标计算方法流程图;
[0073] 图3为本发明提供的指标计算方法中具体的函数生成流程图;
[0074] 图4为本发明提供的一种总的指标计算器结构示意图;
[0075] 图5为本发明提供的一种具体的指标计算器结构示意图;
[0076] 图6本发明提供的另一种具体的指标计算器结构示意图。

【具体实施方式】
[0077] 本发明的核心是提供一种指标计算方法及指标计算器。
[0078] 为了使本【技术领域】的人员更好地理解本发明方案,下面结合附图和【具体实施方式】 对本发明作进一步的详细说明。
[0079] 在本发明提供的指标计算方法的一个实施例中,参见图1,包括以下步骤:
[0080] SlOl、接收第一指标。
[0081] 进行指标计算时,首先要接收需要被计算的第一指标。具体地说,就是接收第一指 标对应的公式。
[0082] S102、解析所述第一指标,得到包括多个指标指令的第一指标指令集。
[0083] 接收到第一指标对应的公式后,需要解析该指标,将对应的公式转换为计算机能 够执行的一个个指令。而且在指标计算中,运算过程是有顺序的。例如说包含括号时,括号 内的运算需要优先进行,因此在将该指标解析为多个可执行指令时,还要生成顺序号,形成 包含有执行顺序的多个指标指令的第一指标指令集。在对第一指标进行计算时,按照顺序 执行,得到正确的结果。
[0084] S103、确定所述第一指标指令集中的指标指令类型及所述指令类型对应的执行方 式。
[0085] 将第一指标解析成指令后,需要确认指令类型,不同的指令类型代表了不同的执 行方式。正如同个人运用公式进行计算是相同的道理,在计算时,需要调入参数和相应运算 符号。在复杂的计算过程中,还可能需要先计算出子公式,将结果带入上一级公式再进行运 算。
[0086] 因此,要计算第一指标对应的公式,需要确认指令的类型,以进行不同的动作,保 障能够让整个公式可执行。
[0087] S104、按照所述执行顺序依次以所述确定的执行方式执行所述第一指标指令集中 的多个指标指令。
[0088] 具体的,当指令集形成且确认了指令类型及其对应的执行方式后,按照顺序依次 执行,最终会得到第一指标的计算结果,整个计算过程完成。
[0089] 在本实施例中,可以利用虚拟堆栈机按指令排序和指令类型对应的执行方式执行 指令。
[0090] 具体的,首先需要初始化一个堆栈,称之为桢栈,桢包括方法名、指令计数器、操作 数栈、指标值寄存器和指令集。初始桢的方法名为main,作为入口方法,指令计数器为0, 操作数栈为空,指标寄存器为空,指令集根据指标编码从数据库中读取,按照执行顺序号排 序。将初始桢压入桢栈。
[0091] 执行帧栈最顶部的帧,如果当前指令计数器的值小于指令集个数,则执行与指令 计数器的值相等的执行顺序号的指令。
[0092] 执行指令,直到桢栈为空,说明所有指令已经全部执行,返回操作数栈顶的值作为 指标值。
[0093] 本发明将计算指标的运行过程解析为几类执行指令,如最基本的运算、公式参数 调入的指令。在需要利用其它公式运算结果作为运算参数时,通过嵌套执行另一指标的方 式进行运算。这样的方式更加容易实现指标的扩展,也不需要专业人员经常地维护。因此 本发明的可用性更高。
[0094] 在本发明提供的指标计算方法中,参见图2,该实施例包括以下步骤:
[0095] S201、接收第一指标。
[0096] 在本实施例中,具体的接收第一指标时,可以通过文本输入,也可以通过公式编辑 器输入。
[0097] 通过文本输入的方式,在进行复杂的指标计算时,输入错误的概率会比公式编辑 器的方式大。而利用公式编辑器输入时,公式编辑器会对公式的符号格式及其相互匹配的 关系进行校验,因此其错误率相对文本输入更小。
[0098] 本发明提供的接收第一指标的方式可以自由选择,并没有任何限制只能用某种方 式。文本输入的方式方便时,可以采取文本输入。公式编辑器的方式方便时,可以使用公式 编辑器的方式。
[0099] S202、将所述第一指标的字符解析成第一指标符号。
[0100] 在将需要运算的指标转换为可执行的指令时,需要对指标进行编译。首先,即是将 指标对应的公式中的一个个字符解析成符号,检测公式的词法错误。
[0101] S203、将所述第一指标符号解析成第一指标语法树,形成运算的优先级。
[0102] 在这里,是将所述符号进行语法分析,构建出由上述的符号形成的数据结构即所 述的第一指标语法树,并进行语法检查。
[0103] S204、遍历所述第一指标语法树。
[0104] 在本实施例中,采用深度优先算法遍历第一指标语法树。在遍历第一指标语法树 的过程中,对第一指标对应的公式包含的函数类型、参数个数、引用的指标类型等进行检 查。
[0105] S205、在所述第一指标抽象语法树的每个节点生成对应的第一指标指令和第一指 标执行顺序号,形成所述第一指标指令集。
[0106] 在本实施例中,是利用深度优先算法,对第一指标语法树的运算节点计数,在每个 运算节点生成对应的指令和执行顺序的编号。
[0107] S206、存储所述第一指标指令集。
[0108] 在本实施例中,具体的指令类型包含三种,即基础指令、数据指令和扩展指令。
[0109] S207、确定所述第一指标指令集中的指令为基础指令。
[0110] S208、确定所述第一指标指令集中的指令为数据指令。
[0111] S209、确定所述第一指标指令集中的指令为扩展指令。
[0112] 在本实施例中,具体的指令及其对应的执行方式如下表:
[0113] 指令表
[0114]

【权利要求】
1. 一种指标计算的方法,其特征在于,包括: 接收第一指标; 解析所述第一指标,得到包括多个指标指令的第一指标指令集,所述第一指标指令集 中的多个指标指令有执行顺序; 确定所述第一指标指令集中的指标指令的类型及与所述类型对应的执行方式; 按照所述执行顺序依次以所述确定的执行方式执行所述第一指标指令集中的多个指 标指令。
2. 如权利要求1所述的指标计算方法,其特征在于,所述确定所述第一指标指令集中 的指标指令的类型包括: 确定所述第一指标指令集中的指令为基础指令; 确定所述第一指标指令集中的指令为数据指令;或者 确定所述第一指标指令集中的指令为扩展指令。
3. 如权利要求2所述的指标计算方法,其特征在于,所述确定所述第一指标指令集中 的指标指令的类型为基础指令时,所述以所述确定的执行方式执行所述第一指标指令集中 的多个指标指令包括: 调用所述指令对应的函数。
4. 如权利要求2所述的指标计算方法,其特征在于,所述确定所述第一指标指令集中 的指标指令的类型为数据指令时,所述以所述确定的执行方式执行所述第一指标指令集中 的多个指标指令包括: 获取所述第一指标的数据。
5. 如权利要求2所述的指标计算方法,其特征在于,所述确定所述第一指标指令集中 的指标指令的类型为扩展指令时,所述以所述确定的执行方式执行所述第一指标指令集中 的多个指标指令包括: 读取第二指标对应的第二指标执行指令集, 其中,所述第二指标为所述扩展指令调用的指标; 执行所述第二指标指令集的指令并返回结果。
6. 如权利要求3所述的指标计算方法,其特征在于,所述函数的生成方法包括: 确定所述函数的函数名及参数个数,写出函数声明; 将所述函数声明字符解析成函数符号; 将所述函数符号解析成函数语法树; 遍历所述函数语法树并进行计数; 在所述函数语法树的每个节点生成对应的函数指令和函数执行顺序号,形成函数指令 集; 存储所述函数名和所述函数指令集。
7. 如权利要求1所述的指标计算方法,其特征在于,所述接收第一指标包括: 接收文本输入的所述第一指标;或 接收公式编辑器输入的所述第一指标。
8. 如权利要求1所述的指标计算方法,其特征在于,所述解析所述第一指标,得到包括 多个指标指令的第一指标指令集包括: 将所述第一指标的字符解析成第一指标符号; 将所述第一指标符号解析成第一指标语法树; 遍历所述第一指标语法树; 在所述第一指标抽象语法树的每个节点生成对应的第一指标指令和第一指标执行顺 序号,形成所述第一指标指令集; 存储所述第一指标指令集。
9. 一种指标计算器,其特征在于,包括: 接收模块,用于接收第一指标; 与所述接收模块相连的解析模块,用于解析所述第一指标,得到包括多个指标指令的 第一指标指令集,所述第一指标指令集中的多个指标指令有执行顺序; 与所述解析模块相连的指令确认模块,用于确定所述第一指标指令集中的指标指令的 类型及与所述类型对应的执行方式; 与所述指令确认模块相连的执行模块,用于按照所述执行顺序依次以所述确定的执行 方式执行所述第一指标指令集中的多个指标指令。
10. 如权利要求9所述的指标计算器,其特征在于,所述解析模块包括: 指标词法解析单元,用于将所述第一指标的字符解析成第一指标符号; 与所述指标词法解析单元相连的指标语法解析单元,用于将所述第一指标符号解析成 第一指标语法树; 与所述指标语法解析单元相连的指令生成单元,用于遍历所述第一指标语法树; 与所述指令生成单元相连的指令集生成单元,用于在所述第一指标抽象语法树的每个 节点生成对应的第一指标指令和第一指标执行顺序号,形成所述第一指标指令集; 与所述指令集生成单元相连的指令集存储单元,用于存储所述第一指标指令集。
11. 如权利要求9所述的指标计算器,其特征在于,所述指令确认模块包括: 与所述解析模块相连的第一指令确认单元,用于确定所述第一指标指令集中的指令为 基础指令; 与所述解析模块相连的第二指令确认单元,用于确定所述第一指标指令集中的指令为 数据指令; 与所述解析模块相连的第三指令确认单元,确定所述第一指标指令集中的指令为扩展 指令。
12. 如权利要求11所述的指标计算器,其特征在于,所述执行模块包括: 与所述第一指令确认单元相连的第一执行单元,用于调用所述指令对应的函数; 与所述第二指令确认单元相连的第二执行单元,用于获取所述第一指标的数据; 与所述第三指令确认单元相连的第三执行单元,用于读取第二指标对应的第二指标执 行指令集, 其中,所述第二指标为所述扩展指令调用的指标, 执行所述第二指标指令集的指令并返回结果。
13. 如权利要求9所述的指标计算器,其特征在于,还包括与所述执行模块相连的函数 生成模块,所述函数生成模块包括 函数确认单元,用于确定所述函数的函数名及参数个数,写出函数声明; 与所述函数确认单元相连的函数词法解析单元,用于将所述函数声明字符解析成函数 符号; 与所述函数词法解析单元相连的函数语法解析单元,用于将所述函数符号解析成函数 语法树; 与所述函数语法解析单元相连的函数指令生成单元,用于遍历所述函数语法树并进行 计数; 与所述函数指令生成单元相连的函数指令集生成单元,用于在所述函数语法树的每个 节点生成对应的函数指令和函数执行顺序号,形成函数指令集; 与所述函数指令集生成单元相连的函数存储单元,用于存储所述函数名和所述函数指 令集。
14.如权利要求9所述的指标计算器,其特征在于,所述接收模块包括: 文本输入单元和/或公式编辑器。
【文档编号】G06F17/15GK104408023SQ201410616742
【公开日】2015年3月11日 申请日期:2014年11月5日 优先权日:2014年11月5日
【发明者】郑德署, 高尚, 段博, 李莉, 叶馥郁, 付慧敏 申请人:中国农业银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1