[发明专利]基于递归替换展开回溯的excel公式面向对象语言的自动转换方法在审
申请号: | 201710016131.2 | 申请日: | 2017-01-10 |
公开(公告)号: | CN107203500A | 公开(公告)日: | 2017-09-26 |
发明(设计)人: | 李正光;王世鹏;邓武;陈恒;杨光 | 申请(专利权)人: | 大连交通大学 |
主分类号: | G06F17/22 | 分类号: | G06F17/22;G06F17/21;G06F9/44 |
代理公司: | 大连东方专利代理有限责任公司21212 | 代理人: | 阎昱辰,李洪福 |
地址: | 116028 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 递归 替换 展开 回溯 excel 公式 面向 对象 语言 自动 转换 方法 | ||
技术领域
本发明涉及一种excel公式面向对象语言的转换方法,尤其涉及一种基于 递归替换展开回溯的excel公式转换方法。涉及专利分类号G06计算;推算; 计数G06F电数字数据处理G06F17/00特别适用于特定功能的数字计算设备或 数据处理设备或数据处理方法。
背景技术
EXCEL软件中集成有大量的数学运算公式,并且能够提供一定范围的自定义 函数功能,大量的一线办公人员都能够完成在EXCEL软件中熟练的编辑公式, 但是由于EXCEL软件非开源的免费软件,软件中的公式和编辑的公式都有固定 格式,只能限制在微软的办公环境中使用。
而随着工业领域/知识自动化程度的不断加深,并且在积极的移植到工程中 间件平台,以便驱动各种软件、硬件和设备,从而完成原本需要人去完成的大 部分工作,将人解放出来去做更加高级、更具创造性的工作。为了实现知识自 动化,原来数据材料将被有效整合,在这个过程中,需要将原有的只能在EXCEL 文件中使用的公式,用新的软件语言描述,以实现在其它领域、平台和软件中 进行有效的移植。
发明内容
本发明的目的一种基于递归替换展开回溯的excel公式面向对象语言的自 动转换方法,包括如下步骤:
—针对excel的需要转换为面向对象语言的数学公式,在excel表格列头 备注返回值;
—对备注返回值的数学公式,采用逆波兰规则、结合预定义公式集和Excel 中的运算符,自动提取公式中的参数;对提取后的参数进行修饰;
—将参数修饰后的数学公式进行解析,对复杂的数学公式逐级简化为所述 数学公式对应的多个原子公式;
—按所述的面向对象语言逐级回溯所述的多个原子公式,直至全部数学公 式完成转换。
作为优选的实施方式,所述的在excel表格列头备注返回值具体包括如下 方式:
—根据单元格值,自动确定备注类型:
如果备注单元格值能够被高级语言自动分析识别为数值类型的单元格,直 接备注为当前数值类型;其它类型直接备注为字符串类型;
—定义成动态类型:对于自有编译或者编译器的转换目标语言,定义成动 态类型。
更进一步的,根据待转换的表格列头中数值和文本数据类型的相对数量, 直接添加后缀。
作为优选的实施方式,所述的提取公式中参数的步骤过程如下:
—预处理:将excel公式集中常量进行替换:将数据公式中的字母全部转 换为大写字母;
—替换展开:用逆波兰规则,遍历所述的数学公式:发现括号进行替换处 理,如果发现需替换的公式是预定义公式集,则连同预定义公式和括号里面的 表达式同时替换;否则只替换括号里的内容。
作为优选的实施方式,所述的参数修饰的规则为表格列头添加附加修饰名:
列名[_附加修饰符]
附加修饰符至少包含两种:_PRE和_NXT,其中_PRE表示引用某个单元格比 当前行小的对应列数据,上一行为_PRE,上两行为_PRE_PRE;_NXT表示引用某个 单元格比当前行大的对应列数据,后一行为_NXT,后两行为_NXT_NXT。
作为优选的实施方式,所述的逆波兰展开过程如下
—从左至右扫描一Excel公式;
—若读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数 堆栈;
—若读取的是运算符:若该运算符为左括号"(",则直接存入运算符堆栈; 若该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇 到左括号为止;
—该运算符为非括号运算符:若运算符堆栈栈顶的运算符为括号,则直接 存入运算符堆栈;若比运算符堆栈栈顶的运算符优先级高或相等,则直接存入 运算符堆栈;若比运算符堆栈栈顶的运算符优先级低,则输出栈顶运算符到操 作数堆栈,并将当前运算符压入运算符堆栈;
—当表达式读取完成后运算符堆栈中尚有运算符时,则依序取出运算符到 操作数堆栈,直到运算符堆栈为空。
更进一步的,逆波兰表达式求值过程如下:
—循环扫描Excel公式中的项目;
如果扫描的项目是操作数,则将其压入操作数堆栈,并扫描下一个项目; 如果扫描的项目是一个二元运算符,则对栈的顶上两个操作数执行该运算;
如果扫描的项目是一个一元运算符,则对栈的最顶上操作数执行该运算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连交通大学,未经大连交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710016131.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:纯电动物流车充电口防护支架总成
- 下一篇:一种电动汽车续航里程预测系统