Type 段

例子:

  1. type # 展示相互递归类型的例子
  2. Node = ref object # 由垃圾收集器管理的对象(ref)
  3. le, ri: Node # 左子树和右子树
  4. sym: ref Sym # 叶子包含对 Sym 的引用
  5. Sym = object # 符号
  6. name: string # 符号的名称
  7. line: int # 符号声明的行数
  8. code: Node # 符号的抽象语法树

类型段由 type 关键字开启。它包含多个类型定义。类型定义是给类型绑定一个名称。 类型定义可以是递归的甚至是相互递归的。相互递归类型只能在同一个 type 段中出现。 像 objects 或者 enums 这样的名义类型仅能在 type 段中定义。