implement generator expr

- `{: a, a <- 3 }`
- `{: [ a, b ], a b <- 3 }`
- `{: a, var b = 3, a <- b }`
- `{: a, a <- 7, a.odd }`
- `{: a, a <- 3, ::a.postln }`
- `{: a, a <- 10, :while a < 3 }`