Проект «Форматирование программы на языке C (beautifier)»
Создать программу, получающую на входе программу на языке C и выдающую на выходе отформатированный по заданным правилам вариант. Программа должна уметь:
- различать блоки {}, директивы препроцессора #, комментарии /**/, скобки (), разделитель ;
- поддерживать одинаковый (заданный пользователем) отступ для всех директив одинакового уровня вложенности
- поддерживать перенос на новую строку или слияние начала блока "{" и нужный отступ для закрывающей "}" ( на уровне/с-отступом открывающего оператора или открывающей "{} )
- поддерживать разбиение длинных строк
- поддерживать разбиение (по запросу) нескольких директив на одной строке
- поддерживать отступ блоков комментариев
- отступ вложенных директив препроцессора
Входные данные -- файл или stdin (по выбору пользователя), выходные аналогично, параметры форматирования задаются командной строкой