a dsl to query and manipulate the AST