12345678910111213141516171819202122232425262728293031323334 |
- # Dump the contents of a NimNode
- import macros
- template plus(a, b: untyped): untyped {.dirty} =
- a + b
- macro call(e: untyped): untyped =
- result = newCall("foo", newStrLitNode("bar"))
- macro dumpAST(n: untyped): untyped =
- # dump AST as a side-effect and return the inner node
- let n = callsite()
- echo n.lispRepr
- echo n.treeRepr
- var plusAst = getAst(plus(1, 2))
- echo plusAst.lispRepr
- var callAst = getAst(call(4))
- echo callAst.lispRepr
- var e = parseExpr("foo(bar + baz)")
- echo e.lispRepr
- result = n[1]
- dumpAST:
- proc add(x, y: int): int =
- return x + y
- proc sub(x, y: int): int = return x - y
|