3. Резервирование памяти Имя файла исходных данных: INPUT.TXT Имя выходного файла: OUTPUT.TXT Ограничение времени: 15 секунд на каждый тест Для резервирования байтов памяти с заданными начальными значениями в языке Ассемблера используется директива DB. Для облегчения описания повторяющихся последовательностей байтов может использо- ваться оператор повторения DUP, причем оператор DUP может быть вложенным. После обработки директивы DB транслятор выделяет со- ответствующее число байтов памяти и записывает в них значения, указанные программистом в директиве DB в качестве параметров. Требуется разработать обработчик директивы DB. Для справки Директива DB имеет следующий синтаксис (для нашей задачи): дир_DB ::= DB операнд операнд ::= строка | выражение| [[список строк],[список выражений]] строка ::= 'символы' выражение ::= count DUP (| [[список строк],[список выражений]]) count ::= натуральное число, меньшее 1000 В качестве символов используем латинские буквы и цифры. Квадратные скобки в данном случае означают операцию итерации - содержимое скобок может либо отсутствовать, либо повторяться несколько раз. В свою очередь, список элементов - это последовательность элемен- тов, разделенных запятыми. Список может быть и пустым. Исходные данные Исходный файл INPUT.TXT содержит директиву DB , ее элементы могут разделяться как одним пробелом, так и несколькими. Перед открываю- щей круглой скобкой пробел может отсутствовать, так как она сама является разделителем. Хвостовые пробелы отсутствуют. Пример файла исходных данных: DB 3 DUP( 'def' , 2 DUP ('ab'),'1') , 'ttt' Выходные данные Выходной файл должен содержать набор символов, которые транслятор записал бы на место зарезервированных в памяти байтов. Строка не может иметь длину более 250 символов. Выходной файл для приведенного примера: defabab1defabab1defabab1ttt