主要观点:
- 介绍电子表格是一个有趣的工具,可存储和结构化数据并包含计算公式,作者决定用 Python 构建电子表格引擎。
- 阐述电子表格可表示为图,通过语法将公式转化为树并处理依赖关系,使用拓扑排序确定计算顺序,编写评估逻辑来计算单元格值。
- 不断添加公式和功能,如基本数学运算、范围查询等,遇到很多挑战但也在不断学习和探索。
关键信息:
- 数据结构中单元格键为字母加数字,值为实际值或公式。
- 用 Lark 库写语法和访问者来处理公式和依赖关系。
- 拓扑排序用于计算单元格评估顺序,避免循环引用。
- 利用 Lark 的 Transformer 类进行公式评估。
- 实现了基本数学运算公式,如加法、减法等。
重要细节:
- 示例数据结构展示了单元格及其值的关系。
- 访问者类
GetDependencies
用于获取依赖项。 - 拓扑排序示例中展示了单元格及其依赖项的表示和排序结果。
- 递归函数用于获取单元格值并处理依赖关系。
- 公式中
value
可以是单元格引用、数字或其他数学表达式,OPERATOR
为运算符函数。 - 实现了范围查询功能,但还需添加多列范围查询及处理相关依赖计算。
- 代码开源在GitHub。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。