以一个数学运算为例: 它的AST可以表达为:

plus(num[1];times(2;plus(num[3];num[4])))

为AST节点的类型,为ast的操作符,则在上面的例子中,只有一种节点类型:Exp,以及以下操作符:

  1. num[n],对于每个
  2. plus,times,这是两个二元操作符。

每个操作符都接收一定数量的操作数,称操作符操作数的数量为arity。times,plus的arity为2,num[n]的arity为0。

操作符接收n个特定类型的操作数后具有类型s,记为

是所有的集合:

是所有arity为的操作数的集合,如上面的例子中,

是所有的集合:

是所有类型为变量的集合。

Reference

  • pfpl. ch1.1