语法树

为了构建Nim语法树,我们需要知道如何用语法树表示Nim源码, 能被Nim编译器理解的树看起来是什么样子的。 Nim语法树节点记载在 macros 模块。 一个更加互动性的学习Nim语法树的方法是用 macros.treeRepr ,它把语法树转换成一个多行字符串打印到控制台。 它也可以用来探索实参表达式如何用树的形式表示, 以及生成的语法树的调试打印。 dumpTree 是一个预定义的宏,以树的形式打印它的实参。树表示的示例:

  1. dumpTree:
  2. var mt: MyType = MyType(a:123.456, b:"abcdef")
  3.  
  4. # 输出:
  5. # StmtList
  6. # VarSection
  7. # IdentDefs
  8. # Ident "mt"
  9. # Ident "MyType"
  10. # ObjConstr
  11. # Ident "MyType"
  12. # ExprColonExpr
  13. # Ident "a"
  14. # FloatLit 123.456
  15. # ExprColonExpr
  16. # Ident "b"
  17. # StrLit "abcdef"