首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >算术表达式求值

算术表达式求值
EN

Stack Overflow用户
提问于 2019-01-09 12:42:24
回答 1查看 399关注 0票数 2

我有一个问题,我不知道如何在OZ中实现它:假设给您一个由元组构建的树描述的算术表达式,如下所示:

  1. 整数由元组int(N)描述,其中N是整数。
  2. 加法由元组add( by )描述,其中X和Y都是算术表达式。
  3. 乘法由元组mul( by )描述,其中X和Y都是算术表达式。

实现一个函数Eval,它接受一个算术表达式并返回它的值。

例如,add(int(1) mul(int(3) int(4)))是一个算术表达式,其计算值返回13

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-14 08:33:57

到目前为止,你还没有表现出你的尝试,这有点令人难过。

不管怎么说。通常,在处理这些问题时,您会从递归的角度考虑。模式匹配是分析表达式的一种很好的方法。

例如,如果您能够计算int(4),那么很明显如何使用简单的递归计算add(int(4) int(4))

代码语言:javascript
运行
复制
declare
proc {Eval Exp Res}
   case Exp
   of int(N) then Res = N
   [] add(X Y) then
      local R1 R2 in
         {Eval X R1}
         {Eval Y R2}
         Res = R1 + R2
      end
   end
end

现在,您可以使用mul或任何其他表达式来扩展它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54110432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档