Generic representation and manipulation of abstract syntax