WebAssembly 是 "Reverse Polish Notation" 计算器吗?

Is WebAssembly a "Reverse Polish Notation" calculator?

据我所知有两种栈机分别是RPN和PN,那么WebAssembly是不是"Reverse Polish Notation"计算器?

堆栈计算机与逆波兰表示法 (RPN) 或波兰表示法 (PN) 之间没有直接联系。你必须区分 grammarsemantics

你可以在你的语法中说运算符运算符应该出现在(add 3 5)之前,介于(3 add 5) 或在 (add 3 5) 之后,它们的操作数和这些语法的语言看起来会有所不同。 stack oriented language 可以使用任何 prefix/infix/postfix 形式来指定参数,我想从这个意义上说,它们可以归类为 PN 或 RPN 语言。

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

WebAssembly 文本格式使用 S 表达式前缀表示法。但它也可以使用中缀或后缀表示法编写。我猜选择 S 表达式是因为它们易于解析,并且 compiler/language 人比 postfix/stackoriented 种语言更常遇到它们。