Блок задач

5. Проекты

Темы
Сложность 8

Проект «Форматирование программы на языке C (beautifier)»

Создать программу, получающую на входе программу на языке C и выдающую на выходе отформатированный по заданным правилам вариант. Программа должна уметь:

  • различать блоки {}, директивы препроцессора #, комментарии /**/, скобки (), разделитель ;
  • поддерживать одинаковый (заданный пользователем) отступ для всех директив одинакового уровня вложенности
  • поддерживать перенос на новую строку или слияние начала блока "{" и нужный отступ для закрывающей "}" ( на уровне/с-отступом открывающего оператора или открывающей "{} )
  • поддерживать разбиение длинных строк
  • поддерживать разбиение (по запросу) нескольких директив на одной строке
  • поддерживать отступ блоков комментариев
  • отступ вложенных директив препроцессора

Входные данные -- файл или stdin (по выбору пользователя), выходные аналогично, параметры форматирования задаются командной строкой