add a dsl for abstract syntax tree