Precedence climbing, AST definition and AST construction

Maybe return `None` to make failure explicit?