Информационно-безопасные системы. Анализ проблемы: Учебное пособие, страница 26

7. К РАЗРАБОТКЕ АНАЛИТИЧЕСКОЙ МОДЕЛИ КОМПИЛЯТОРА

7.1. Назначение трансляторов

При любом рассмотрении вопросов управления центральное место занимает информация, появляющаяся в результате межсистемного и внутрисистемного взаимодей­ствия. В информационных системах информация является продуктом, свойства кото­рого изменяются в соответствии с заданной технологией с помощью комплекса техни­ческих средств и операторов. Важную роль в процессе преобразования информации играет программное обеспечение (ПО) вычислительных систем. Создание ПО сегодня немыслимо без применения трансляторов и компиляторов. Транслятор, по-существу, представляет собой устройство, выполняющее перевод предложений, написанных на одном языке, в предложения, написанные на другом языке. Компилятор, в данном ас­пекте, является специализированным транслятором, и его основная задача заключает­ся в том, чтобы перевести наборы битов (цепочку символов), представляющие про­грамму, написанную на некотором исходном языке программирования, в последовательность машинных команд, которые выполняют то, что задумал программист.

7.2. Анализ процесса компиляции

Основной причиной распространения компиляторов является то, что языки высокого уровня стали основными средствами разработки программ. Бурное развитие ар­хитектур ЭВМ диктует постоянную необходимость появления все новых и новых компиляторов, вместе происходит совершенствование средств разработки компиляторов.

Процесс компиляции можно разбить на три последовательные этапа: лексиче­ский анализ, синтаксический анализ и генерация кода. Па каждом этапе происходит преобразование программы из одной формы представления в другую, но важным здесь является то, что полученный текст на машинном языке должен быть семантически эквивалентным тексту программы на исходном языке программирования.

Проблеме построения математической модели компилятора посвящен ряд работ. В частности, в [1] рассматриваются задачи линеаризации компилятора,    связан­ной с управлением способом просмотра обрабатываемой программы, и декомпозиции компилятора на последовательные фазы. Здесь модели строятся с использованием частичных и смешанных вычислений на основе проецирования и проекций Футамуры.

Еще один подход для описания и исследования семантики таких сложных программ, какими являются компиляторы, предложен в [2]. Данная работа является развитием исследований [3,4] и основана на идеях композиционного программирова­ния, предложенного В.Н.Редько. С помощью этих моделей можно точно выра­зить семантику программ   и средствами математической логики доказывать се­мантические свойства программ.

Кроме того, широко известна декомпозиция компилятора на фазы: лексического анализа, синтаксического анализа и генерации кода, а также описание их с использованием регулярных выражений, конечных автоматов, контекстно-свободных и атрибутных грамматик и т.д. [5-9].

Однако, большинство предлагаемых моделей и методов носят весьма сложный характер, что обусловлено сложностью задач, выполняемых компилятором. А это, в свою очередь, приводит к усложнению программ, практически реализующих процесс компиляции. Такое положение дел открывает широкие возможности для внесения в компиляторы закладок (активных дефектов), которые затем могут быть перенесены или внедрены во вновь создаваемые (транслируемые) программы.

Поэтому все больше и больше растет необходимость разработки моделей компиляторов и методов компиляции, которые смогли бы обеспечить "прозрачность" и "ясность" процесса компиляции.

Исходя из всего выше изложенного, целесообразно выделить основное направление исследований:

- построение модели компилятора, используя которую можно было бы просто и ясно описать процесс компиляции, и разработка на ее основе методов практической, реализации компиляторов, свободных от активных дефектов. Это, по сути, развитие технологии "прозрачного" программирования, когда процесс программирования организуется таким образом, что внесение умышленных дефектов в программные средства практически невозможно, а в случае их появления, они легко могут быть обнаружены.