Implement AST and some AST