ZuseApp/zuse-ios — pull request #70 by pwightman (2014-03-17 05:43:45+00:00)
Title: Create generic code transform libraries

Created a generic framework for traversing all code paths in Zuse code, allowing transforms to be made on individual code elements. This will be useful for many things, but the only thing implemented in this pull request is turning `every` statements in the Zuse domain language into an event+method combo that is part of the Zuse IR, so that we don’t have to add anything to the language the interpreter understands to support things like `every 2 seconds`.

To clarify, we have two separate languages really, the language the user creates, and the language the interpreter understands. They're mostly the same, but the interpreter language has most of the core features it already needs and new features (like `every 2 seconds` timer events) can be implemented by transforming it into a `on_event` plus a method call at compilation time. This makes it so we don't have to extend the core language, and other interpreters (like @abutterf's) won't have to change anything in their interpreter, they just need to add a method to their method library.

@abutterf we should probably talk a bit about the details of this fairly soon. But the things to note are the `ZSCodeTransformEveryBlock` (seen [here](https://github.com/ZuseApp/zuse-ios/compare/code-transforms?expand=1#diff-9185992ce043a3f22ae95f8833ca0cc7R11) and [here](https://github.com/ZuseApp/zuse-ios/compare/code-transforms?expand=1#diff-9633ef2c4f89243ae6d074870bb0c187R13))

I wrote applicable tests and they're all passing. @mhogenso if you want to give a quick code review, I'd appreciate it. Let me know so I can merge to master.