feat(compiler): support events

assignments are a bit special, because in the future they will require contexts to have all keys predefined. To save some pain to future PR writers, can you use a non-assignment expressions like `a + 2`