《有智慧的提问》-拆分数学工具提问

问题:有什么工具可以拆分长表达式为短表达式(最好还能列出每一步的计算结果)吗?

详细表述:
我希望能有这样一个工具:
给出一个长表达式:(1 + 2 +3)* 5 - 3
输出为数个短表达式(最好还能列出每一步的计算结果):
1 + 2 = 3
3 + 3 = 6
6 * 5 = 30
30 - 3 = 27
需要这个工具的理由是我正在做PA1-表达式求值,我的nemu在计算长表达式时有bug,可那些长表达式太长以至于我不可能用肉眼去拆分它的计算步骤,这对我的调试造成了很大困难。

为了解决我的问题,我做了如下努力:
1. STFW。google搜索“数学工具 表达式拆分”,得到如下网页
1.1. 因式分解工具 - 数字帝国。这个网页提供了一个把 长表达式 转化为 a^b * c^d 的因式分解形式的工具,与我的需求不符合
1.2. javascript-正则表达式-拆分数学表达式。 这个网站提供的方案是把 长表达式 转化成 token数组,与我的需求不符合
2. STFW。google搜索 “Tools: split long expression into short expressions。 得到了大量使用 分隔符 拆分 字符串 的函数和工具,与我的需求无关
3. STFM。考虑到 C 语言可以使用如 unsigned int a = {长表达式}; 的语句来计算长表达式结果,我在思考能否从 gcc 的编译过程中得到把 长表达式 拆成后的 短表达式,为此我阅读了 gcc 的 man page,并做了如下尝试。
3.1. 使用 gcc -E 编译含有 长表达式 的代码。没有得到被拆分的表达式,看来表达式计算并不在预编译阶段完成
3.2. 使用 gcc -S 编译含有 长表达式 的代码。得到的 .s文件 中并不包含任何和长表达式有关的数据,感觉很奇怪
3.3. 使用 gcc -v 编译含有 长表达式 的代码。得到的输出中没有任何和拆分长表达是相关的内容。
3.4. 快速扫过了 gcc man page 中的其它内容(共两万行),没有得到其它疑似可能帮助我拆分长表达式的信息

我依然没有解决我的问题,请问有人能帮助我吗?或者为我的调试提供任何建议?

posted @ 2022-07-30 15:16  yinhuachen  阅读(131)  评论(0编辑  收藏  举报