Update Scala version
Implement macros code generation behind `~>` operator
Implement `test` and `EMPTY` rules, and tests behind