Директивы include
Директивы include
Многие языки содержат специальную директиву, которая вставляет содержимое одного файла внутрь другого. Часто такие директивы называются include. В этой задаче вам предстоит реализовать функциональность простейшего препроцессора, обрабатывающего эту инструкцию. Вам задан набор текстовых файлов. Строка файла вида "#include <имя-файла>" должна быть заменена на содержимое соответствующего файла (имя файла в директиве может быть как абсолютным так и относительным; относительный путь всегда начинается с имени файла или директории или спецпоследовательности ".."). В этой строке могут быть любые незначащие пробелы, не разрывающие элементы include и имя-файла. Если файла с именем имя-файла не существует, то эта строка должна быть просто вырезана из текста файла.
Giriş verilənləri
Входной файл состоит из последовательности описаний файлов. Каждое описание начинается со строки, содержащей путь до файла в формате файловых систем Windows. Путь задан абсолютно и не содержит пробелов и символов "\" идущих подряд. В качестве элемента пути может быть использована спецпоследовательность "..", которая обозначает переход в родительскую директорию. Другие спецпоследовательности не используются. Имя любой директории и файла состоит из латинских букв, цифр и символа ".". Сравнение имен файлов следует проводить без учета регистра. Далее идет содержимое файла. Последовательность вида "^Z" обозначает конец файла. Эта последовательность всегда записана на отдельной строке, то есть каждая строка файла, включая последнюю, завершается переводом строки. Входной файл содержит не менее одного описания. Размер файла не превосходит 40 KB. Длина каждой строки файла не превосходит 1000 символов. Все имена файлов в тесте (включая те, что встречаются в директивах include) – это корректные абсолютные или относительные пути.
Çıxış verilənləri
Выведите содержимое первого файла после обработки препроцессором. Гарантируется, что размер вывода не превзойдет 400 KБ. Если обработка директив приводит к циклическому процессу – выведите строку "Too long file".
Пример
Nümunə
c:\files\first.txt #define MAX_N 1024 #include <second.txt> last line ^Z c:\FILES\..\files\second.txt included file #include <..\files\third.txt> ^Z c:\FILES\THIRD.txt included file ^Z
#define MAX_N 1024 included file included file last line