Помощь - Поиск - Пользователи - Календарь
Полная версия: программа на обработку текстовых файлов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Александр Сергеевич
помогите пожалуйста, второй день ломаю голову над решением задачи:

Написать программу, которая удаляет из текста Паскаль-программы, хранящейся в файле, описания процедур и функций, к которым нет обращения. Если из-за неправильной расстановки операторных скобок невозможно выделить описание процедуры или функции, выводить сообщение об ошибке

каким образом проверять правильность постановки операторных скобок?
@nto$ka
Цитата
каким образом проверять правильность постановки операторных скобок?

Сколько открылось, столько и закрылось. Причем нужно понимать, что подобной ситуации:
Код
begin
end;
end;

Быть не должно. Я думаю что нужно делать так: если встретился begin инкременируем некоторую переменную, а если встретился end, уменьшаем. Если на какой-то момент переменная стала отрицательной, значит ошибка. Если под конец переменная не равна нулю, значит ошибка.
Александр Сергеевич
может встретиться конструкция case of...end. и получается «лишний» end
@nto$ka
Ну значит, если встретится case, то тоже инкременировать smile.gif
Александр Сергеевич
вопрос как определять описания процедур и функци, например что begin..end относятся к описанию данной процедуры, а не к другой процедуре или основной программе
IUnknown
Встретил слово Function или Procedure, ищешь за ним первый begin, а дальше - как было сказано выше: begin увеличивает счетчик, end - уменьшает (поскольку в теле подпрограммы описание типа Record применяться не может, то единственное исключение - case). Как только счетчик стал равным 0 - значит, тело процедуры закончилось.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.