I've always been bad at parsing trees in imperative languages