Some (sometimes) desirable source code formatting cannot be deduced from the abstract syntax tree alone:
Consider the following (pseudo-)code example:
bar.glob = 1;
bar.plu.a1 = 21;
bar.plu.coza = fol;
Should this code formatted this way? Or should it be formatted
bar.glob = 1;
bar.plu.a1 = 21;
bar.plu.coza = fol;
to emphasize that three assignments are done?
Or should this code be formatted
bar.glob = 1;
bar.plu .a1 = 21;
bar.plu .coza = fol;
to bring make the "depth" of the structure variables more tabular so that you can immediately see by the tabular shape which "depth" a member variable has?
We can go even further like
bar.glob = 1;
bar.plu.a1 = 21;
bar.plu.coza = fol;
which emphasizes that the author considers it to be very important that the reader can easily grasp the magnitudes of the numbers involved (which is why in Excel or LibreOffice Calc, numbers are right-aligned by default). Or combining this with making the depth "tabular":
bar.glob = 1;
bar.plu .a1 = 21;
bar.plu .coza = fol;
Each of these formattings emphasizes different aspects of the code that the author wants to emphasize. This information cannot be deduced from some abstract syntax tree alone. Rather, this needs additional information by the programmer in which sense the structure behind the code intended by the programmer is to be "interpreted".