CN104408544A - 公式解析装置和方法 - Google Patents
公式解析装置和方法 Download PDFInfo
- Publication number
- CN104408544A CN104408544A CN201410589832.1A CN201410589832A CN104408544A CN 104408544 A CN104408544 A CN 104408544A CN 201410589832 A CN201410589832 A CN 201410589832A CN 104408544 A CN104408544 A CN 104408544A
- Authority
- CN
- China
- Prior art keywords
- node
- formula
- character string
- script
- resolved
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Educational Administration (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Machine Translation (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明提供了一种公式解析装置,包括:公式字符串读入单元,用于读入待解析公式字符串;公式字符串及表达式解析单元,用于根据预先定义的公式标记符号和关键字列表,对待解析公式的字符串和特殊表达式进行解析,得到Node节点的Node集合;Node集合处理单元,用于对Node集合进行处理,生成待解析公式的可执行脚本。本发明还提供了一种公式解析方法。通过本发明的技术方案,可以在现有的公式解析方式基础上,充分利用单对象类型完成多对象类型的公式解析,建立多对象类型元数据参与的公式解析的通用、统一解析思路。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种公式解析装置和一种公式解析方法。
背景技术
在企业管理软件中,用户在录入单据信息时,需要根据单据状态自动计算相关信息数据,如录入报价,自动进行如下计算:
⑴报价含税:
含税单价=报价×扣率×扣率2;
价税合计=含税单价×数量;
无税金额=价税合计÷(1+税率);
税额=价税合计-无税金额;
无税单价=无税金额÷数量;
折扣额=报价×数量-价税合计;
⑵报价不含税:
无税单价=报价×扣率×扣率2;
无税金额=无税单价×数量;
税额=无税金额×税率;
价税合计=无税金额+税额;
含税单价=价税合计÷数量;
折扣额=报价×数量-价税合计。
但是,用户手工计算、录入等容易出错,数据录入效率低,数据录入时间长,难以保证数据的正确性。
因此,需要一种新的公式解析技术,可以在现有的公式解析方式基础上,充分利用单对象类型完成多对象类型的公式解析,建立多对象类型元数据参与的公式解析的通用、统一解析思路。
发明内容
本发明正是基于上述问题,提出了一种新的公式解析技术,可以在现有的公式解析方式基础上,充分利用单对象类型完成多对象类型的公式解析,建立多对象类型元数据参与的公式解析的通用、统一解析思路。
有鉴于此,本发明提出了一种公式解析装置,包括:公式字符串读入单元,用于读入待解析公式字符串;公式字符串及表达式解析单元,用于根据预先定义的公式标记符号和关键字列表,对待解析公式的字符串和特殊表达式进行解析,得到Node节点的Node集合;Node集合处理单元,用于对Node集合进行处理,生成待解析公式的可执行脚本。在该技术方案中,可以将待解析公式进行解析处理,生成可执行脚本;这样,就可以使得用户基于预设公式进行计算自动填充单据表格信息,避免用户手工计算、录入等错误,大大提高数据录入的效率,节省数据录入时间,并保证数据的正确性。
在上述技术方案中,优选地,所述公式字符串及表达式解析单元,具体包括:字符串解析模块,用于根据预先定义的公式标记符号,对待解析公式的字符串进行解析;特殊表达式解析模块,用于根据预先定义的关键字列表,对待解析公式的特殊表达式进行解析,得到Node集合。在该技术方案中,可以通过对公式中的字符串和特殊表达式分别进行解析,得到便于生成可执行脚本的Node集合。
在上述技术方案中,优选地,所述Node集合处理单元,具体包括:Node节点动态插入模块,用于在Node集合中动态插入Node节点,将待解析公式处理为预设形式;替换标志设置模块,用于根据预先定义的Flag标记,对动态插入Node节点后的Node集合设置替换标志;并获取设置替换标志后Node集合中的所有变量,返回以预设符号分割的字符串;校验节点动态增加模块,用于在返回的字符串中,动态增加校验节点,对返回的字符串的可访问性和数据有效性进行校验;可执行脚本生成模块,用于当返回的字符串的可访问性和数据有效性完成校验后,将返回的字符串替换为预先定义的可访问数据,生成预先定义的可执行脚本。在该技术方案中,通过对Node集合的形式变换和标志替换、可访问性和数据有效性校验,生成可执行脚本,使得在用户录入数据时,能根据预设公式自动计算相关联数据,并填入单据表格中,避免了手工计算和录入的低效和易错性。
在上述技术方案中,优选地,所述校验节点动态增加模块在返回的字符串中,动态增加校验节点的操作,进一步包括:⑴读取返回的以预设符号分割的字符串;⑵判断是否已将以预设符号分割的字符串从头读到尾;若是,则结束当前动态增加校验节点的过程;否则,读入Node节点,执行步骤⑶;⑶对读入的Node节点,进行压栈操作;⑷压栈处理后,判断压栈操作所得符号是否为赋值号;若是,则执行步骤⑸;否则,返回步骤⑶;⑸进行两次出栈操作;⑹两次出栈后,向前探索找到分号;⑺将赋值号至预设符号间的变量动态生成校验节点并压栈;⑻将赋值号至预设符号间的除数为零的变量生成校验节点并压栈;⑼将整个表达式入栈,完成本次动态增加校验节点的过程。在该技术方案中,通过动态增加校验节点,检验Node集合的可访问性和数据有效性,可以提高在将数据填入单据表格时的准确性。
在上述技术方案中,优选地,所述可执行脚本生成模块生成预先定义的可执行脚本的操作,进一步包括:⑴生成可访问性检测脚本;⑵拼装Node节点为脚本;⑶拼装计算结果脚本;⑷调用上述脚本函数,生成预先定义的可执行脚本。在该技术方案中,由于基于脚本技术,只需要对公式中涉及的变量,替换为单据表格中可访问数据,并在计算之前进行可访问性校验和数据有效性校验,并在不能正确运行时,给出提示,引导用户输入相关数据,极大的提高了易用性。
根据本发明的又一个方面,还提出了一种公式解析方法,包括:步骤202:读入待解析公式字符串;步骤204:根据预先定义的公式标记符号和关键字列表,对待解析公式的字符串和特殊表达式进行解析,得到Node节点的Node集合;步骤206:对Node集合进行处理,生成待解析公式的可执行脚本。在该技术方案中,可以将待解析公式进行解析处理,生成可执行脚本;这样,就可以使得用户基于预设公式进行计算自动填充单据表格信息,避免用户手工计算、录入等错误,大大提高数据录入的效率,节省数据录入时间,并保证数据的正确性。
在上述技术方案中,优选地,所述步骤204,具体包括:步骤302:根据预先定义的公式标记符号,对待解析公式的字符串进行解析;步骤304:根据预先定义的关键字列表,对待解析公式的特殊表达式进行解析,得到Node集合。在该技术方案中,可以通过对公式中的字符串和特殊表达式分别进行解析,得到便于生成可执行脚本的Node集合。
在上述技术方案中,优选地,所述步骤206,具体包括:步骤402:在Node集合中动态插入Node节点,将待解析公式处理为预设形式;步骤404:根据预先定义的Flag标记,对动态插入Node节点后的Node集合设置替换标志;并获取设置替换标志后Node集合中的所有变量,返回以预设符号分割的字符串;步骤406:在返回的字符串中,动态增加校验节点,对返回的字符串的可访问性和数据有效性进行校验;步骤408:当返回的字符串的可访问性和数据有效性完成校验后,将返回的字符串替换为预先定义的可访问数据,生成预先定义的可执行脚本。在该技术方案中,通过对Node集合的形式变换和标志替换、可访问性和数据有效性校验,生成可执行脚本,使得在用户录入数据时,能根据预设公式自动计算相关联数据,并填入单据表格中,避免了手工计算和录入的低效和易错性。
在上述技术方案中,优选地,所述步骤406在返回的字符串中,动态增加校验节点的操作,进一步包括:⑴读取返回的以预设符号分割的字符串;⑵判断是否已将以预设符号分割的字符串从头读到尾;若是,则结束当前动态增加校验节点的过程;否则,读入Node节点,执行步骤⑶;⑶对读入的Node节点,进行压栈操作;⑷压栈处理后,判断压栈操作所得符号是否为赋值号;若是,则执行步骤⑸;否则,返回步骤⑶;⑸进行两次出栈操作;⑹两次出栈后,向前探索找到分号;⑺将赋值号至预设符号间的变量动态生成校验节点并压栈;⑻将赋值号至预设符号间的除数为零的变量生成校验节点并压栈;⑼将整个表达式入栈,完成本次动态增加校验节点的过程。在该技术方案中,通过动态增加校验节点,检验Node集合的可访问性和数据有效性,可以提高在将数据填入单据表格时的准确性。
在上述技术方案中,优选地,所述步骤408生成预先定义的可执行脚本的操作,进一步包括:⑴生成可访问性检测脚本;⑵拼装Node节点为脚本;⑶拼装计算结果脚本;⑷调用上述脚本函数,生成预先定义的可执行脚本。在该技术方案中,由于基于脚本技术,只需要对公式中涉及的变量,替换为单据表格中可访问数据,并在计算之前进行可访问性校验和数据有效性校验,并在不能正确运行时,给出提示,引导用户输入相关数据,极大的提高了易用性。
通过以上技术方案,可以在现有的公式解析方式基础上,充分利用单对象类型完成多对象类型的公式解析,建立多对象类型元数据参与的公式解析的通用、统一解析思路。
附图说明
图1示出了根据本发明的实施例的公式解析装置的框图;
图2示出了根据本发明的实施例的公式解析方法的流程图;
图3示出了根据本发明的实施例的公式字符串及表达式解析单元的流程图;
图4示出了根据本发明的实施例的Node集合处理单元的流程图;
图5示出了根据本发明的实施例的公式解析装置的原理示意图;
图6示出了根据本发明的实施例的动态插入Node节点的原理示意图;
图7示出了根据本发明的实施例的扫描Node集合设置替换标志的原理示意图;
图8示出了根据本发明的实施例的扫描Node集合获取所有变量并返回以“,”分割的字符串的原理示意图;
图9示出了根据本发明的实施例的扫描Node集合动态增加校验节点的流程图;
图10示出了根据本发明的实施例的组装节点为可执行脚本的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的公式解析装置的框图。
如图1所示,根据本发明的实施例的公式解析装置100,包括:公式字符串读入单元102,用于读入待解析公式字符串;公式字符串及表达式解析单元104,用于根据预先定义的公式标记符号和关键字列表,对待解析公式的字符串和特殊表达式进行解析,得到Node节点的Node集合;Node集合处理单元106,用于对Node集合进行处理,生成待解析公式的可执行脚本。在该技术方案中,可以将待解析公式进行解析处理,生成可执行脚本;这样,就可以使得用户基于预设公式进行计算自动填充单据表格信息,避免用户手工计算、录入等错误,大大提高数据录入的效率,节省数据录入时间,并保证数据的正确性。
在上述技术方案中,优选地,公式字符串及表达式解析单元102,具体包括:字符串解析模块1022,用于根据预先定义的公式标记符号,对待解析公式的字符串进行解析;特殊表达式解析模块1024,用于根据预先定义的关键字列表,对待解析公式的特殊表达式进行解析,得到Node集合。在该技术方案中,可以通过对公式中的字符串和特殊表达式分别进行解析,得到便于生成可执行脚本的Node集合。
在上述技术方案中,优选地,Node集合处理单元104,具体包括:Node节点动态插入模块1042,用于在Node集合中动态插入Node节点,将待解析公式处理为预设形式;替换标志设置模块1044,用于根据预先定义的Flag标记,对动态插入Node节点后的Node集合设置替换标志;并获取设置替换标志后Node集合中的所有变量,返回以预设符号分割的字符串;校验节点动态增加模块1046,用于在返回的字符串中,动态增加校验节点,对返回的字符串的可访问性和数据有效性进行校验;可执行脚本生成模块1048,用于当返回的字符串的可访问性和数据有效性完成校验后,将返回的字符串替换为预先定义的可访问数据,生成预先定义的可执行脚本。在该技术方案中,通过对Node集合的形式变换和标志替换、可访问性和数据有效性校验,生成可执行脚本,使得在用户录入数据时,能根据预设公式自动计算相关联数据,并填入单据表格中,避免了手工计算和录入的低效和易错性。
在上述技术方案中,优选地,校验节点动态增加模块1046在返回的字符串中,动态增加校验节点的操作,进一步包括:⑴读取返回的以预设符号分割的字符串;⑵判断是否已将以预设符号分割的字符串从头读到尾;若是,则结束当前动态增加校验节点的过程;否则,读入Node节点,执行步骤⑶;⑶对读入的Node节点,进行压栈操作;⑷压栈处理后,判断压栈操作所得符号是否为赋值号;若是,则执行步骤⑸;否则,返回步骤⑶;⑸进行两次出栈操作;⑹两次出栈后,向前探索找到分号;⑺将赋值号至预设符号间的变量动态生成校验节点并压栈;⑻将赋值号至预设符号间的除数为零的变量生成校验节点并压栈;⑼将整个表达式入栈,完成本次动态增加校验节点的过程。在该技术方案中,通过动态增加校验节点,检验Node集合的可访问性和数据有效性,可以提高在将数据填入单据表格时的准确性。
在上述技术方案中,优选地,可执行脚本生成模块1048生成预先定义的可执行脚本的操作,进一步包括:⑴生成可访问性检测脚本;⑵拼装Node节点为脚本;⑶拼装计算结果脚本;⑷调用上述脚本函数,生成预先定义的可执行脚本。在该技术方案中,由于基于脚本技术,只需要对公式中涉及的变量,替换为单据表格中可访问数据,并在计算之前进行可访问性校验和数据有效性校验,并在不能正确运行时,给出提示,引导用户输入相关数据,极大的提高了易用性。
图2示出了根据本发明的实施例的公式解析方法的流程图。
如图2所示,根据本发明的实施例的公式解析方法,包括:步骤202:读入待解析公式字符串;步骤204:根据预先定义的公式标记符号和关键字列表,对待解析公式的字符串和特殊表达式进行解析,得到Node节点的Node集合;步骤206:对Node集合进行处理,生成待解析公式的可执行脚本。在该技术方案中,可以将待解析公式进行解析处理,生成可执行脚本;这样,就可以使得用户基于预设公式进行计算自动填充单据表格信息,避免用户手工计算、录入等错误,大大提高数据录入的效率,节省数据录入时间,并保证数据的正确性。
在上述技术方案中,优选地,如图3所示,步骤204,具体包括:步骤302:根据预先定义的公式标记符号,对待解析公式的字符串进行解析;步骤304:根据预先定义的关键字列表,对待解析公式的特殊表达式进行解析,得到Node集合。在该技术方案中,可以通过对公式中的字符串和特殊表达式分别进行解析,得到便于生成可执行脚本的Node集合。
在上述技术方案中,优选地,如图4所示,步骤206,具体包括:步骤402:在Node集合中动态插入Node节点,将待解析公式处理为预设形式;步骤404:根据预先定义的Flag标记,对动态插入Node节点后的Node集合设置替换标志;并获取设置替换标志后Node集合中的所有变量,返回以预设符号分割的字符串;步骤406:在返回的字符串中,动态增加校验节点,对返回的字符串的可访问性和数据有效性进行校验;步骤408:当返回的字符串的可访问性和数据有效性完成校验后,将返回的字符串替换为预先定义的可访问数据,生成预先定义的可执行脚本。在该技术方案中,通过对Node集合的形式变换和标志替换、可访问性和数据有效性校验,生成可执行脚本,使得在用户录入数据时,能根据预设公式自动计算相关联数据,并填入单据表格中,避免了手工计算和录入的低效和易错性。
在上述技术方案中,优选地,如图9所示,步骤406在返回的字符串中,动态增加校验节点的操作,进一步包括:⑴读取返回的以预设符号分割的字符串;⑵判断是否已将以预设符号分割的字符串从头读到尾;若是,则结束当前动态增加校验节点的过程;否则,读入Node节点,执行步骤⑶;⑶对读入的Node节点,进行压栈操作;⑷压栈处理后,判断压栈操作所得符号是否为赋值号;若是,则执行步骤⑸;否则,返回步骤⑶;⑸进行两次出栈操作;⑹两次出栈后,向前探索找到分号;⑺将赋值号至预设符号间的变量动态生成校验节点并压栈;⑻将赋值号至预设符号间的除数为零的变量生成校验节点并压栈;⑼将整个表达式入栈,完成本次动态增加校验节点的过程。在该技术方案中,通过动态增加校验节点,检验Node集合的可访问性和数据有效性,可以提高在将数据填入单据表格时的准确性。
在上述技术方案中,优选地,如图10所示,步骤408生成预先定义的可执行脚本的操作,进一步包括:⑴生成可访问性检测脚本;⑵拼装Node节点为脚本;⑶拼装计算结果脚本;⑷调用上述脚本函数,生成预先定义的可执行脚本。在该技术方案中,由于基于脚本技术,只需要对公式中涉及的变量,替换为单据表格中可访问数据,并在计算之前进行可访问性校验和数据有效性校验,并在不能正确运行时,给出提示,引导用户输入相关数据,极大的提高了易用性。
本发明提供了一种应用软件系统中业务对象数据按预定规则计算结果并自动填充数据的技术方案。本发明的技术方案,试图使得用户基于预设公式进行计算自动填充单据表格信息,避免用户手工计算、录入等错误,大大提高数据录入的效率,节省数据录入时间,并保证数据的正确性。
本发明的技术方案,基于脚本技术,解决了用户在web表单中录入单据数据,自动计算单据相关数据的问题。主要完成如下操作:
自动检测公式完整性,并给出提示;
自动检测公式中相关数据的有效性,并给出提示;
自动检测除数为零的情况;
支持从服务器端获取数据;
支持多种常用函数;
支持四则运算及带括号的复杂算式。
本发明技术方案的原理图,参见图5。
解析公式标记符号:
符号 | 标记 | 含义 | 符号 | 标记 | 含义 |
﹥ | 1 | 大于 | ( | 13 | 左括号 |
﹥= | 2 | 大于等于 | ) | 14 | 右括号 |
﹤ | 3 | 小于 | { | 15 | 左开式大括号 |
﹤= | 4 | 小于等于 | } | 16 | 右开式大括号 |
!= | 5 | 不等于 | ; | 17 | 分号 |
! | 6 | 否定 | , | 18 | 逗号 |
= | 7 | 赋值 | : | 19 | 冒号 |
== | 8 | 相等 | 20 | 变量名 | |
+ | 9 | 加号 | 21 | 数字常量 | |
- | 10 | 减号 | 22 | 保留字 | |
* | 11 | 乘号 | 23 | 字符串常量 | |
/ | 12 | 除号 | |||
预定义的关键字列表:
符号 | 标记 | 符号 | 标记 |
if | 0 | switch | 5 |
do | 1 | case | 6 |
while | 2 | true | 7 |
while | 4 | false | 8 |
for |
解析公式字符串后得到如下节点的集合:
Node |
symid |
token |
flag |
Flag标记定义:
扫描Node集合,处理a,b=xxxx公式;动态插入Node节点,将该公式处理为图6的形式。扫描Node集合,设置替换标志,参加图7。扫描Node集合,获取所有变量,返回以“,”分割的字符串,参见图8。扫描Node集合,动态增加校验节点,参见图9。组装节点为可执行脚本,参见图10。
参见图9,动态增加校验节点的过程,具体包括:
⑴读取返回的以“,”分割的字符串;
⑵判断是否已将以“,”分割的字符串从头读到尾;若是,则结束当前动态增加校验节点的过程;否则,读入Node节点,执行步骤⑶;
⑶对读入的Node节点,进行压栈操作;
⑷压栈处理后,判断压栈操作所得符号是否为赋值号;若是,则执行步骤⑸;否则,返回步骤⑶;
⑸进行两次出栈操作;
⑹两次出栈后,向前探索找到分号;
⑺将赋值号至分号间的变量动态生成校验节点并压栈;
⑻将赋值号至分号间的除数为零的变量生成校验节点并压栈;
⑼将整个表达式入栈,完成本次动态增加校验节点的过程,再返回步骤⑵。
参见图10,组装节点为可执行脚本的过程,具体包括:
⑴生成可访问性检测脚本;
⑵拼装Node节点为脚本;
⑶拼装计算结果脚本;
⑷调用上述脚本函数。
通过本发明的技术方案,在用户录入数据时,能根据预设公式自动计算相关联数据,并填入单据表格中,避免了手工计算和录入的低效和易错性。
现有的公式解析多是对公式进行词法分析,然后深度递归,逐步计算返回结果,相对比较复杂;本发明的技术方案,由于基于脚本技术,不需要做过多的词法分析,只需要对公式中涉及的变量,替换为单据表格中可访问数据,并在计算之前进行可访问性校验和数据有效性校验,并在不能正确运行时,给出提示,引导用户输入相关数据,极大的提高了易用性。
本发明的技术方案,支持了常用数学、日期、字符串等函数;支持扩展自定义函数;还支持了与服务器端的通信功能,可以从服务端获取数据;还支持直接输入脚本片段,利用脚本动态性,直接使用脚本引擎解释执行,从而支持了逻辑判断。
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中没有简便的、统一的针对复杂类型公式解析的解决办法。现有的公式解析无法完成有复杂类型参与的公式解析过程。因此,本发明提出了一种公式解析装置和一种公式解析方法,可以在现有的公式解析方式基础上,充分利用单对象类型完成多对象类型的公式解析,建立多对象类型元数据参与的公式解析的通用、统一解析思路。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种公式解析装置,其特征在于,包括:
公式字符串读入单元,用于读入待解析公式字符串;
公式字符串及表达式解析单元,用于根据预先定义的公式标记符号和关键字列表,对待解析公式的字符串和特殊表达式进行解析,得到Node节点的Node集合;
Node集合处理单元,用于对Node集合进行处理,生成待解析公式的可执行脚本。
2.根据权利要求1所述的公式解析装置,其特征在于,所述公式字符串及表达式解析单元,具体包括:
字符串解析模块,用于根据预先定义的公式标记符号,对待解析公式的字符串进行解析;
特殊表达式解析模块,用于根据预先定义的关键字列表,对待解析公式的特殊表达式进行解析,得到Node集合。
3.根据权利要求1或2所述的公式解析装置,其特征在于,所述Node集合处理单元,具体包括:
Node节点动态插入模块,用于在Node集合中动态插入Node节点,将待解析公式处理为预设形式;
替换标志设置模块,用于根据预先定义的Flag标记,对动态插入Node节点后的Node集合设置替换标志;并获取设置替换标志后Node集合中的所有变量,返回以预设符号分割的字符串;
校验节点动态增加模块,用于在返回的字符串中,动态增加校验节点,对返回的字符串的可访问性和数据有效性进行校验;
可执行脚本生成模块,用于当返回的字符串的可访问性和数据有效性完成校验后,将返回的字符串替换为预先定义的可访问数据,生成预先定义的可执行脚本。
4.根据权利要求3所述的公式解析装置,其特征在于,所述校验节点动态增加模块在返回的字符串中,动态增加校验节点的操作,进一步包括:
⑴读取返回的以预设符号分割的字符串;
⑵判断是否已将以预设符号分割的字符串从头读到尾;若是,则结束当前动态增加校验节点的过程;否则,读入Node节点,执行步骤⑶;
⑶对读入的Node节点,进行压栈操作;
⑷压栈处理后,判断压栈操作所得符号是否为赋值号;若是,则执行步骤⑸;否则,返回步骤⑶;
⑸进行两次出栈操作;
⑹两次出栈后,向前探索找到分号;
⑺将赋值号至预设符号间的变量动态生成校验节点并压栈;
⑻将赋值号至预设符号间的除数为零的变量生成校验节点并压栈;
⑼将整个表达式入栈,完成本次动态增加校验节点的过程。
5.根据权利要求3所述的公式解析装置,其特征在于,所述可执行脚本生成模块生成预先定义的可执行脚本的操作,进一步包括:
⑴生成可访问性检测脚本;
⑵拼装Node节点为脚本;
⑶拼装计算结果脚本;
⑷调用上述脚本函数,生成预先定义的可执行脚本。
6.一种公式解析方法,其特征在于,包括:
步骤202:读入待解析公式字符串;
步骤204:根据预先定义的公式标记符号和关键字列表,对待解析公式的字符串和特殊表达式进行解析,得到Node节点的Node集合;
步骤206:对Node集合进行处理,生成待解析公式的可执行脚本。
7.根据权利要求6所述的公式解析方法,其特征在于,所述步骤204,具体包括:
步骤302:根据预先定义的公式标记符号,对待解析公式的字符串进行解析;
步骤304:根据预先定义的关键字列表,对待解析公式的特殊表达式进行解析,得到Node集合。
8.根据权利要求6或7所述的公式解析方法,其特征在于,所述步骤206,具体包括:
步骤402:在Node集合中动态插入Node节点,将待解析公式处理为预设形式;
步骤404:根据预先定义的Flag标记,对动态插入Node节点后的Node集合设置替换标志;并获取设置替换标志后Node集合中的所有变量,返回以预设符号分割的字符串;
步骤406:在返回的字符串中,动态增加校验节点,对返回的字符串的可访问性和数据有效性进行校验;
步骤408:当返回的字符串的可访问性和数据有效性完成校验后,将返回的字符串替换为预先定义的可访问数据,生成预先定义的可执行脚本。
9.根据权利要求8所述的公式解析方法,其特征在于,所述步骤406在返回的字符串中,动态增加校验节点的操作,进一步包括:
⑴读取返回的以预设符号分割的字符串;
⑵判断是否已将以预设符号分割的字符串从头读到尾;若是,则结束当前动态增加校验节点的过程;否则,读入Node节点,执行步骤⑶;
⑶对读入的Node节点,进行压栈操作;
⑷压栈处理后,判断压栈操作所得符号是否为赋值号;若是,则执行步骤⑸;否则,返回步骤⑶;
⑸进行两次出栈操作;
⑹两次出栈后,向前探索找到分号;
⑺将赋值号至预设符号间的变量动态生成校验节点并压栈;
⑻将赋值号至预设符号间的除数为零的变量生成校验节点并压栈;
⑼将整个表达式入栈,完成本次动态增加校验节点的过程。
10.根据权利要求8所述的公式解析方法,其特征在于,所述步骤408生成预先定义的可执行脚本的操作,进一步包括:
⑴生成可访问性检测脚本;
⑵拼装Node节点为脚本;
⑶拼装计算结果脚本;
⑷调用上述脚本函数,生成预先定义的可执行脚本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410589832.1A CN104408544B (zh) | 2014-10-28 | 2014-10-28 | 公式解析装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410589832.1A CN104408544B (zh) | 2014-10-28 | 2014-10-28 | 公式解析装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104408544A true CN104408544A (zh) | 2015-03-11 |
CN104408544B CN104408544B (zh) | 2018-08-31 |
Family
ID=52646173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410589832.1A Active CN104408544B (zh) | 2014-10-28 | 2014-10-28 | 公式解析装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104408544B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105405002A (zh) * | 2015-09-24 | 2016-03-16 | 国网山东省电力公司 | 基于sap平台的公式数据配置方法及系统 |
CN106874243A (zh) * | 2016-12-21 | 2017-06-20 | 武汉斗鱼网络科技有限公司 | 基于字符串的公式处理方法及装置 |
CN109426972A (zh) * | 2017-08-21 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 订单页面的处理方法、装置和系统 |
CN109471540A (zh) * | 2018-10-29 | 2019-03-15 | 北京轩宇信息技术有限公司 | 一种基于浏览器的公式录入解析方法及装置 |
CN112230895A (zh) * | 2020-10-19 | 2021-01-15 | 厦门市易联众易惠科技有限公司 | 一种el表达式解析方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055568A (zh) * | 2007-05-25 | 2007-10-17 | 金蝶软件(中国)有限公司 | 一种电子数据表的计算方法和装置 |
CN101377768A (zh) * | 2008-09-09 | 2009-03-04 | 金蝶软件(中国)有限公司 | 工资计算方法及系统 |
CN102043758A (zh) * | 2010-12-30 | 2011-05-04 | 畅捷通软件有限公司 | 自动计算数值的方法和装置 |
-
2014
- 2014-10-28 CN CN201410589832.1A patent/CN104408544B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055568A (zh) * | 2007-05-25 | 2007-10-17 | 金蝶软件(中国)有限公司 | 一种电子数据表的计算方法和装置 |
CN101377768A (zh) * | 2008-09-09 | 2009-03-04 | 金蝶软件(中国)有限公司 | 工资计算方法及系统 |
CN102043758A (zh) * | 2010-12-30 | 2011-05-04 | 畅捷通软件有限公司 | 自动计算数值的方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105405002A (zh) * | 2015-09-24 | 2016-03-16 | 国网山东省电力公司 | 基于sap平台的公式数据配置方法及系统 |
CN106874243A (zh) * | 2016-12-21 | 2017-06-20 | 武汉斗鱼网络科技有限公司 | 基于字符串的公式处理方法及装置 |
CN106874243B (zh) * | 2016-12-21 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | 基于字符串的公式处理方法及装置 |
CN109426972A (zh) * | 2017-08-21 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 订单页面的处理方法、装置和系统 |
CN109471540A (zh) * | 2018-10-29 | 2019-03-15 | 北京轩宇信息技术有限公司 | 一种基于浏览器的公式录入解析方法及装置 |
CN112230895A (zh) * | 2020-10-19 | 2021-01-15 | 厦门市易联众易惠科技有限公司 | 一种el表达式解析方法、装置、设备及存储介质 |
CN112230895B (zh) * | 2020-10-19 | 2023-06-23 | 厦门市易联众易惠科技有限公司 | 一种el表达式解析方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104408544B (zh) | 2018-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Santos et al. | Ontology alignment repair through modularization and confidence-based heuristics | |
CN104408544A (zh) | 公式解析装置和方法 | |
WO2017211051A1 (zh) | 目标对象的社交账号挖掘方法、服务器和存储介质 | |
CN103748579A (zh) | 在映射化简框架中处理数据 | |
CN108288181B (zh) | 一种优惠活动的生成方法、装置、终端设备及存储介质 | |
US9171257B2 (en) | Recommender evaluation based on tokenized messages | |
CN108171528B (zh) | 一种归因方法及归因系统 | |
US9183598B2 (en) | Identifying event-specific social discussion threads | |
CN111428451B (zh) | 文本在线编辑方法、装置、电子设备及存储介质 | |
CN106095972B (zh) | 一种信息分类方法及装置 | |
Alhawarat et al. | An efficient modified Polak–Ribière–Polyak conjugate gradient method with global convergence properties | |
CN113434542B (zh) | 数据关系识别方法、装置、电子设备及存储介质 | |
CN109241075B (zh) | 指标基础数据的处理方法、设备及计算机可读存储介质 | |
CN112949290A (zh) | 文本纠错方法、装置及通信设备 | |
CN105630839A (zh) | 网页信息的获取方法和装置 | |
CN102479072B (zh) | 一种多表头报表的生成方法、装置及终端 | |
CN105550250A (zh) | 一种访问日志的处理方法及装置 | |
CN114297515B (zh) | 信息推荐方法、装置、电子设备和存储介质 | |
US9684491B2 (en) | Annotation-based item description | |
CN109949090A (zh) | 客户推荐方法、装置、电子设备及介质 | |
CN113703753B (zh) | 用于产品开发的方法、装置和产品开发系统 | |
CN104537128A (zh) | 一种网页信息提取方法及装置 | |
CN106909571B (zh) | 网站的访问路径的分析方法及装置 | |
CN113850643A (zh) | 产品推荐方法、装置、电子设备及可读存储介质 | |
CN113656466A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |