Extract macros from the AST, add <void-token> class

Remove useless variable from test
Create <result> class
Change the way variables are built
Add list-type function
Add some methods
Add pattern matcher helper functions
Add match-var