PoEdu培训 C++项目班 第四课 计算器升级 添加π等符号运算
文章类别: 培训笔记 0 评论

PoEdu培训 C++项目班 第四课 计算器升级 添加π等符号运算

文章类别: 培训笔记 0 评论

计算器升级

为计算器添加符号

符号, 比如 π, 我们还可以自定义一些符号, 比如 a=5, b = 10, a+b = 15 这样的功能

分析

SymbolTable     // 符号表类, 维护符号表, 让符号和ID相对应
    AddSymbol(str)
    ID FindSymbol(str)
    string GetSymbolName(ID)
Stroage         // 仓库类, 让值和ID相对应
    GetValue(ID)
    SetValue(ID)
    AddValue(ID)
    AddConstants(SymbolTable&)  // 增加常量

二者是一个依赖关系
    依赖关系带来的是两步操作
        1. AddSymbol
        2. AddValue
    新增一个Helper类, 统一封装1, 2步, 帮我们简便操作.

Helper      // 组合了SymbolTable 和 Stroage, 他们是组合关系

根据以上架构, 需要改造现有类

Scanner     // 需要扫描变量, 等号
Parser      // 需要解析变量
    x = 5
    一个表达式总是 一个Term + Expr
    并且Factor的优先级高
    所以 x 放到Factor中解析
    现在, 剩下了 = 5, 所以回到Expr中进行解析
    等号, 在Expr中解析

需要新增两个类
    变量Node
    等号Node
变量Node 其实是一个虚拟的Node, 只有在这个节点 等于一个值时, 它才有意义.   
在变得有意义之后, Calc方法就会返回 Stroage 类中的值.

UML图

Alt UML
图片太大, 看不清楚可以下载后进行放大查看, 原图为高清图.

程序效果

Alt 运行效果

工程源码

暂不对外提供, 如果需要请留下邮箱.

如有错误,请提出指正!谢谢.

回复