S-expressions 符号表达式

S-expressions(全称符号表达式,Symbolic Expressions)是一种源自 Lisp 编程语言家族的基础语法和数据结构形式,其核心特点是通过括号嵌套的前缀表示法来描述代码和数据。

S-expressions 的基本结构

(if (< x 10) 
	(add x 5) 
	(multiply x 2))

这表示 “如果 x 小于 10,则执行 x+5,否则执行 x×2”。

在 WebAssembly(.wat)中的应用

WebAssembly 的文本格式(.wat)使用 S-expressions 作为语法基础,例如What is WebAssembly?中提到的阶乘函数:

(module
  (func $fac (param f64) (result f64)
    local.get 0
    f64.const 1
    f64.lt
    if (result f64)
      f64.const 1
    else
      local.get 0
      local.get 0
      f64.const 1
      f64.sub
      call $fac
      f64.mul
    end)
  (export "fac" (func $fac)))

为什么 WebAssembly 选择 S-expressions?