基于C++17的公式计算器,采用递归下降法识别公式。
(1)设计及实现计算表达式的公式计算器,表达式中包含+、-、×、/、(、)、%运算符, sin、cos、tan、pow、sqrt、log、ln 函数。
(2)对于一个给定的表达式,能够检查有无词法错误和语法错误,若有错误能指定出错位置 和错误类型。
(3)给出该表达式的中间表示形式(三地址码),前缀和后缀表达式。
(4)输出运算结果,达到公式计算的目的。
(5)准备多组测试样例,对测试样例进行测试和验证,并对输出结果进行分析。
- 计算功能:
-
具有+、-、*、/、%取模共5种运算符
-
具有sin、cos、tan、pow(平方)、sqrt、log(以10为底)、ln(以e为底)共7种函数
-
错误提示:对词法错误和语法错误给出报错提示,伴有错误信息和提示音。
-
分析显示:给出算式的前缀表达式、后缀表达式和三地址码。
-
使用体验:
- 支持读写公式文件,数据持久化
- 计算器部分和分析展示部件分离,可以自由调整布局。
- 支持键盘快捷键。
注:为了简便起见,0~9的数字统一用num表示,各种函数统一用fun表示
文法G[E]:
E->TE' (0)
E'->+TE'|-TE'|ε (1/2/3)
T->FT' (4)
T'->*FT'|/FT'|%FT'|ε (5/6/7/8)
F->(E)|fun(E)|num|PI|e|ε (9/10/11/12/13/14)