WebAssembly是“反向波兰符号”计算器吗?

YHS*_*SPY 2 webassembly

据我了解,RPN和PN有两种堆栈机,因此WebAssembly是“反向波兰符号”计算器吗?

Dan*_*und 5

堆栈机与反向波兰语符号(RPN)或波兰语符号(PN)之间没有直接连接。您必须区分语法语义

您可以在语法中说运算符应该在其操作数的add 3 53 add 5)之前,()之间或之后(add 3 5)之后,这些语法的语言看起来会有所不同。一组面向语言可以使用任何的前缀/中缀/后缀的形式指定参数,我想在这个意义上,他们可以被归类为PN或RPN语言。

语言的语义学 -当计算表达式时发生的事情-与语言的语法分开。WebAssembly规范使用抽象的堆栈机来规定这些语义:对于每条指令,它都说明消耗了多少堆栈项以及又增加了多少堆栈项。用于生成WebAssembly代码的语言可以采用前缀,中缀或后缀形式。

WebAssembly文本格式使用S表达式前缀表示法。但是也可以使用中缀或后缀表示法来编写。我猜想选择S表达式是因为它们易于解析,并且与面向后缀/堆栈的语言相比,编译器/语言人员更常遇到。

  • 当我编写Wasm参考解释器时,我最初选择了S表达式。这是因为(1)Wasm当时仍是一种表达语言,而不是堆栈机;(2)没有时间或没有希望改变语法,并且(3)最好使用简单而有规律的东西。 (2认同)