aboutsummaryrefslogtreecommitdiff
path: root/tree.txt
blob: 75433b2b505b025046e134f2d383bcc447c44320 (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
The Expr
========
       [ block ] ⇐ a block is a list of exprs
        │    ┌┘
        │    │
       [ expr ] ── [ lit ] ⇐ a literal value; "base case" for the tree
        │    │      ├── type
     ┌──┘    └──┐   └─ value
[ def ]        [ call ]
 │                   │
 ├─ [target] ← id    ├─ [target] ← id ⇐ an id is a pointer to another part of the tree
 └── [value] ← expr  └──── [arg] ← expr

Example Expr Tree
=================
[ block ]
 │
 ├─ [ def ]
 │   │
 │   ├─ [target] → hello
 │   └── [value] → [ lit ]
 │                  ├── type → str
 │                  └─ value → Hello, World
 ├─ [ call ]
 │   │
 │   ├─ [target] → print
 │   └──── [arg] → hello
 ...