]> Witch of Git - ivy/commit
Parse S-expressions into the abstract syntax tree
authorCassie Jones <code@witchoflight.com>
Thu, 27 Feb 2020 16:58:19 +0000 (17:58 +0100)
committerCassie Jones <code@witchoflight.com>
Thu, 27 Feb 2020 16:58:19 +0000 (17:58 +0100)
commit80f4d7a54a81655c0df7e534e988ef11205a7035
tree0f7c91c6336549c5787eed095639ffae51657d17
parent0c56405b4da55c8539b54f79cc4b720ad0243f0e
Parse S-expressions into the abstract syntax tree

While doing this, we handle name resolution and "upvar" captures. The
name resolution context "Env" forms a stack that has a reference to the
outer environment at each level. A new level is pushed at each lambda
that's introduced. The environment includes a list of "upvars" that have
to be copied into the closure, which is updated every time a variable
lookup finds the variable in an outer environment instead of the local
environment. This process has to use a RefCell because you can't make
the lifetimes work out with a chain of mutable references.

The parsing aside from that environment stack is relatively
straightforward parsing.
program.vy
src/ast.rs [new file with mode: 0644]
src/main.rs