As a step towards making it easier to construct a semantics for all the languages found in the wild, this paper considers the common practice of having a small(ish) core language and a set of desugarings from the surface language.
The problem they tackle is learning the desugarings. They try four different approaches: naïve tree matching; learning a tree transducer by Gibbs sampling; genetic programming; and synthesis. While none of these actually succeed, they have a detailed analysis of why each fails.