2013-12-19 34 views
0

我知道它有做编译器转换表达式后缀前缀东西(我不知道是哪一个确切),我认为编译器这样做,因为在后缀和前缀表达式括号是不需要强调运营商的优先级。所以任何人都可以告诉我为什么以及计算机如何评估数学表达式?
对所有的编程语言编译器来说都是一样的过程吗?编译器如何评估数学表达式?

+0

这里的问题是,方法在某种意义上是统一的,但个别实现差异很大。参加一个编译器课程,甚至只是阅读克雷肖的*让我们编译一个编译器*,你就会得到广泛的图片。 – dmckee

+0

@dmckee谢谢。题外话题:有没有像堆栈溢出这样的“问答”网站,我可以提出与计算机科学相关的问题,如:什么是ajax或什么是学习C++和这类问题的好书。因为我认为这些问题在这里不受欢迎。 – gandalf

回答

1

通常是使用操作数和运算符堆栈的后缀表示法。任何第一年的计算机科学书籍(编译器设计)将讨论细节。它与所遇到的括号以及输入中遇到的操作符的相对优先级(和关联性)有关。大多数计算机语言具有相似的评估,优先级和关联性规则,并将使用类似的过程。但不是所有的!