文章目录

1.更正设计缺陷

  • 算数表达式解析器的一个缺陷在于它的语法是右结合的。这意味着,8-2+1被解析为8-(2+1)
  • 可以通过更正语法
    可以设计成左结合的,把它设计成表达式+一个项;
    expresion:=expresion ‘+’ term,
    但这这会导致无限循环(Expr调用Expr,Expr又调用Expr。。。)
    前面的方法都是右递归,这里是左递归
  • 一种解决办法
    使用左结合的方法;
    SumNode有多个子代,主要处理+和-法运算;
    ProdectNode也有多个子代,主要处理*和/运算,这里没表示,后面看代码;
    (P43)面向对象版表达式计算器
  • 改进后的类图
    positives:处理节点的正负号,因为Node中的继承类NumberNode是不区分正负的,总是正的
    MultipleNode是一个抽象类,其派生类有2个,一个是SumNode(处理加减法),一个是ProductNode(处理乘除法)
    (P43)面向对象版表达式计算器
    使用StartUml
    (P43)面向对象版表达式计算器
    注意抽象类的画法
    (P43)面向对象版表达式计算器

28:29

相关文章:

  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
  • 2022-12-23
  • 2021-10-09
  • 2021-07-03
猜你喜欢
  • 2021-05-28
  • 2021-09-29
  • 2021-07-27
  • 2021-12-24
  • 2021-07-08
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案