boto/jmespath — pull request #62 by jamesls (2014-06-25 10:54:18+00:00)
Title: Initial commit that switches to an simpler AST

This commit is a pure refactoring, a non-functional change.
The internal have been restructured as follows:

* The AST nodes have been switched to dictionaries instead of
classes. In additional to getting pretty-printing for free now,
this also makes it the AST nodes purely data, the search() behavior
is now removed from AST nodes, effectively decoupling the AST
representation from the execution semantics of the AST nodes.
* The search()'ing functionality has been extracted to an external
tree visitor. The visitor interface also allows for a generic
mechanism for manipulating the AST in the future (i.e. AST
rewriting for optimization, emitting byte code).
* The functions have been moved out to a separate module. The
interpreter now takes a dependency on the runtime functions.
This also theoretically makes it possible for a user to add
new functions.

The only noticeable change from this change is that function
name validation and arity validation are now at runtime instead
of compile time. By doing this though we now allow for user
provided functions.