> Просто нужны некоторые исследования и теория.
Кстати, ещё одна сложность с C/C++ AST ещё в том, что есть макросы и код надо форматировать до их раскрытия, а не после.
Если бы я работал над такой задачей (форматирование по AST), то наверное бы обходил узлы AST и смотрел бы какому узлу какой участок исходного кода соответствует. Если узел лежит внутри раскрытого макроса, то заменял бы соответствующее поддерево на псевдо-узел "вызов макроса". Ещё надо не забывать про комментарии, лишние (с точки зрения AST) '\n' и т.п. Про эти элементы я бы наверное тоже как-то пытался угадать к какому узлу AST они относятся (следующему или предыдущему лексически) и считал бы частью узла.