
- •Системное программное обеспечение
- •II. Трансляторы
- •1. Общие сведения о трансляторах
- •1.2. Синтаксис языка.
- •1.3. Семантика.
- •1.4. Лексический анализ.
- •1.5. Синтаксический анализ.
- •2. Общие особенности языков программирования и трансляторов
- •5. Различия формальных грамматик языков.
- •2.2. Общие характеристики и параметры языков программирования.
- •2.3. Особенности трансляторов.
- •III. Структуры, организация, хранение и поиск данных
- •1. Структуры данных
- •1.1. Статические структуры данных.
- •Массив как статическая структура данных
- •Линейный поиск в массивах данных
- •Способы сортировки в массивах данных
- •1. Пузырьковая сортировка (попарные перестановки).
- •2. Сортировка выбором.
- •3. Сортировка простыми вставками.
- •Некоторые рекомендации при работе с массивом
- •Запись как статическая структура данных
- •Статическая структура данных – множество
Системное программное обеспечение
II. Трансляторы
1. Общие сведения о трансляторах
1.2. Синтаксис языка.
Синтаксис – это совокупность правил некоторого языка, определяющих формирование его элементов; задается с помощью правил, которые описывают следующие понятия языка программирования: символы; элементарные конструкции (переменные), образующиеся из последовательности символов; выражения, представляющие собой последовательность элементарных конструкций и символов; операторы, которыми являются последовательности выражений, элементарных конструкций и символов; подпрограммы (процедуры, функции), состоящие из последовательностей операторов.
Последовательность понятий и их допустимое использование в правилах определяют синтаксически правильные структуры, образующие программы.
Именно иерархия объектов, а не то, как они взаимодействуют между собой, определяется через синтаксис.
1.3. Семантика.
Семантика – это правила и условия, определяющие соотношения между элементами языка и их смысловыми значениями, а также интерпретацию содержательного значения синтаксических конструкций языка.
Объекты языка программирования не только размещаются в тексте в соответствии с некоторой иерархией, но и дополнительно связаны между собой посредством других понятий, образующих разнообразные ассоциации (например, переменная, для которой синтаксис определяет допустимое местоположение только в описаниях и некоторых операторах, обладает определенным типом, может использоваться с ограниченным множеством операций, имеет адрес, размер и должна быть описана до того, как будет использоваться в программе).
1.4. Лексический анализ.
Лексические единицы (лексемы) – это минимальные конструкции, которые могут быть продекларированы языком (идентификаторы, ключевые слова, код операции, разделители, константы).
Лексический анализ осуществляется лексическим анализатором, который производит анализ исходного текста на правильность записи лексических единиц входного языка, затем он переводит программу из нотации исходного текста в нотацию лексем.
1.5. Синтаксический анализ.
Программа в виде лексем поступает на вход синтаксическому анализатору, являющемуся компонентой компилятора, которая осуществляет проверку исходных операторов на соответствие синтаксическим правилам данного языка программирования (осуществляет синтаксический анализ); результатом работы является либо информация о том, что в программе имеются синтаксические ошибки с указанием координат этих ошибок и их диагностика, либо представление программы в некотором промежуточном виде (например, бесскобочная запись, либо запись в виде деревьев). Это промежуточное представление, которое является синтаксически и лексически правильной программой, поступает на вход семантическому анализатору.
1.6. Семантический анализ.
Семантика – это все то, что не описывается синтаксисом и лексикой языка.
Семантический анализатор, являющийся компонентой компилятора, производит проверку исходных операторов на соответствие семантики данного языка программирования (осуществляет семантический анализ); ставит в соответствие синтаксически и семантически правильным конструкциям объектный код, т. е. происходит генерация кода.