Rus Eng
О компании
Технологии  
Компилятор переднего плана
Интегрированная среда разработки
Виртуальная машина С\С++
Тестовый набор для отладки компиляторов С\С++
Разработчикам ПО
Производителям микроконтроллеров
Партнеры / Клиенты
Перспективные проекты
| | | |
Главная страница    Технологии    Компилятор переднего плана
Компилятор переднего плана

Ядром инструментальных систем и средств, ориентированных на Си++, по праву следует считать компилятор переднего плана Си++, компонент, на который возложены функции лексического, синтаксического и семантического анализа исходных программ.

Компилятор переднего плана, выполнив полный анализ исходной единицы трансляции, на выходе формирует так называемое промежуточное представление (ПП) программы. ПП образуется из структур, которые компилятор создает и наполняет в процессе обработки исходного текста и которые в совокупности содержат полную информацию об исходной программе.

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

Что касается традиционной компиляции, то завершающие ее генераторы исполняемого кода выступают такими же клиентами промежуточного представления, что и другие компоненты

Промежуточное представление

Три основные компоненты промежуточного представления (ПП) соответствуют трем категориям сущностей языка Си++.

Дерево программы содержит образ общей структуры исходного текста на Си++, включая блоки программы (пространства имен, функции и составные операторы), заключенные в них объявления и операторы, а также выражения.

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

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

Все элементы ПП (узлы дерева и элементы таблицы символов) содержат атрибуты привязки сущности к месту ее задания в исходном тексте.

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

Отличительные характеристики компилятора переднего плана Интерстрон

  • Компилятор реализует международный стандарт языка Си++ ISO/IEC 14882:1998 практически в полном объеме. Степень соответствия стандарту - на уровне наиболее известных реализаций Си++ (Miscrosoft, IBM), а в некоторых аспектах (например таких, как частичная специализация шаблонных классов, частичное упорядочение шаблонов функций) превосходит их.
  • Создаваемое компилятором промежуточное представление содержит в совокупности полную информацию об исходной программе, вплоть до комментариев к тексту.
  • Компилятор разработан как мобильная программа. С одной стороны, его исходный текст, написанный на языках ANSI C и C++, допускает компиляцию и сборку такими известными инструментами, как IBM Visual Age C++, Miscrosoft Visual C++, GNU C++. С другой стороны, работоспособность компилятора проверена в различных программно-аппаратных средах, в частности, на персональных компьютерах PC IBM под управлением ОС Windows NT, OS/2, Windows 95/98, FreeBSD, на рабочих станциях SPARC под управлением ОС Solaris, а также на Sun 3/60 под управлением SunOS.
  • Компилятор является полностью локализуемой программой. Это означает, во-первых, что предусмотрена возможность вывода всех диагностических сообщений компилятора на любом языке помимо английского по умолчанию. Во-вторых, компилятор позволяет использовать при программировании любые идентификаторы, соответствующие стандарту ISO/IEC 14882:1998, т.е. не только основанные на традиционном английском языке.
  • Компилятор является полностью оригинальной программой, созданной без использования каких-либо разработок третьих компаний или аналогичных свободно-доступных систем (типа компилятора GNU).
  • Вместе с компилятором поставляется стандартная библиотека Си++, которая предлагает готовые компоненты общего назначения, диагностики, работы со строками, ввода/вывода, контейнеры, итераторы и т.п. в полном объеме, предусмотренном стандартом ISO/IEC 14882:1998.

ЗАО "Интерстрон" 1998-08.06.2015, ООО "Интерстрон" 09.06.2015 по н.в. Все права защищены.
Москва, Дмитровское шоссе, 1/1
e-mail: interstron-info@mail.ru
web: www.interstron.ru
Тел.: +7 (495) 769-55-68