abstract syntax tree scala compiler