MyWackoSite: СпецкурсCxx/Задачи/Препроцессор

Задача: препроцессор

Описание

Требуется разработать программу «по мотивам» стадартного препроцессора языка C.

Функциональные требования

  1. Программа должна принимать имена входного и выходного файлов в качестве параметров коммандной строки.
  2. В процессе работы, программа должна осуществлять препроцессинг входного файла:
    • Осуществлять сцепление строк, разделенных программистом посредством "\".
    • Встраивать включаемые файлы (рекурсивно).
    • Заменять комментарии пустыми строками.
    • Осуществлять макроподстановки.
    • Осуществлять подготовку текста для условной компиляции.
  3. Программа должна поддерживать следующие комманды препроцессора:
    • #include
    • #define
    • #undef
    • #ifdef | #ifndef / #else / #endif
    • #if / #else / #endif
  4. При поиске включаемых файлов, файлы, указанные в угловых скобках, должны искаться в первую очередь в системных каталогах с заголовочными файлами.
  5. Программа должна поддерживать следующие опции коммандной строки:
    • -D
    • -I

Требования к проекту

Тестирование

Препроцессированные исходные тексты на C, не содержащие неподдерживаемых директив препроцессора, должны безошибочно компилироваться.

Дополнительная информация