blob: 3a26ffd2f1e08aa3488a0fcd2f9c536d8658aabf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# 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
|