Java 分析电子表格语法
我正在用我的Java类开发一个基本的电子表格编辑器(都是从零开始编写的)。我的任务是编写函数包(分析单元格内容并输出计算结果)。Java 分析电子表格语法,java,regex,spreadsheet,Java,Regex,Spreadsheet,我正在用我的Java类开发一个基本的电子表格编辑器(都是从零开始编写的)。我的任务是编写函数包(分析单元格内容并输出计算结果)。 目前,我可以通过将表达式转换为RPN并计算结果来解析表达式,例如1*(2+3)^4-5%6。现在我正致力于将单元格名称添加到该表达式中。我希望单元名称解析器直接用它们的数值替换单元名称,但我现在很难。我已经设法找到了一种将正则表达式与一个单元格一起使用的方法(灵感来源于),但我不知道如何使它与表达式中的多个单元格名称一起使用。请注意:将正则表达式用于此方法不是一种正确
目前,我可以通过将表达式转换为RPN并计算结果来解析表达式,例如
1*(2+3)^4-5%6
。现在我正致力于将单元格名称添加到该表达式中。我希望单元名称解析器直接用它们的数值替换单元名称,但我现在很难。我已经设法找到了一种将正则表达式与一个单元格一起使用的方法(灵感来源于),但我不知道如何使它与表达式中的多个单元格名称一起使用。请注意:将正则表达式用于此方法不是一种正确的方法。像A1这样的简单引用可以成功地替换为计算
值,但当您尝试解析更复杂的表达式(如
交叉图纸参考(=Sheet2!A1,='My sheet'!A1)、三维参考(=Sheet1:Sheet3!A1)、R1C1样式的参考(=R[-1]C3)、定义名称参考(=name)等。
将单元格引用替换为计算值将不允许您计算行(A2)之类的内置函数(结果为2),
它需要引用参数而不是单元格值
我认为你的RPN表格应该扩大到包括简单参考、3d参考等项目。
为类似Excel的表达式创建解析器的最简单方法是使用编译器生成器。例如,看看“编译器生成器Coco/R”(),它有一个java版本