首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分析电子表格语法

分析电子表格语法
EN

Stack Overflow用户
提问于 2014-01-06 10:42:29
回答 1查看 154关注 0票数 0

我正在用Java类编写一个基本的电子表格编辑器(都是从头开始编写的)。我的任务是编写函数包(分析单元格的内容并输出计算结果)。目前,我可以通过将表达式转换为RPN,然后计算结果来解析一个表达式,比如1*(2+3)^4-5%6。现在,我正在努力将单元格名添加到表达式中。我想让单元名称解析器直接用它们的数值替换单元名称,但是我遇到了困难。我已经找到了一种在一个单元格中使用regex的方法(受https://stackoverflow.com/a/10073892/3165024启发),但我不知道如何使它与表达式中的多个单元格名称一起工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-07 08:58:49

注意:这种方法使用Regex并不是一种正确的方法。像A1这样的简单引用可以成功地被来自引用单元格的计算值替换,但是当您试图解析更复杂的表达式时,您的任务会变得更加困难,例如交叉表引用(=sheet 2!A1,='My sheet'!A1)、3d引用(=sheet 1:sheet 3!A1)、R1C1样式的引用(=R-1C3)、定义的名称引用(=name)等等。将单元格引用替换为计算值将不允许计算行(A2)之类的内置函数(结果是2),这需要引用参数而不是单元格值。

我认为您的RPN表单应该进行扩展,以包括用于简单引用、3d引用等的项。创建类似Excel表达式的解析器的最简单方法是使用编译器生成器。例如,看看“Compiler /R”(http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/),它有一个java版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20948201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档