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