К функциям программы компилятора относятся

Содержание

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

Системы программирования обычно содержат:

· среду разработки программ;

· библиотеки справочных программ (функций, процедур);

· редакторы связей и др.

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

По этому критерию можно выделить следующие уровни языков программирования:

машинно-независимые (языки высокого уровня).

Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных.

A 05 Компиляция и линковка (Васюков А.В., 2019)

Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.

Языки высокого уровня делятся на:

алгоритмические (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов;

логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания;

объектно-ориентированные (Object Pascal, Delphi, C++, Visual Basic, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над ними. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.

Алгоритмический язык (как и любой другой язык), образуют три его составляющие: алфавит, синтаксис и семантика.

Читайте также:
Как пользоваться программой ms

Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы.

Синтаксис — правила построения из символов алфавита специальных конструкций, с помощью которых составляется алгоритм.

Семантика — система правил толкования конструкций языка. Таким образом, программа составляется с помощью соединения символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики.

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

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

Компиляция и интерпретация за 10 минут

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

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

Транслятор (англ. translator — переводчик) — это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.

Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется. (Pascal, C).

Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой. (Basic).

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

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

Цикл с постусловием функционирует иначе. Сначала выполняется один раз те действия, которые подлежат повторению, затем проверяется логическое выражение, определяющее условие выхода из цикла, например, I>6. Если условие выхода ложно, то цикл с постусловием прекращает свою работу, в противном случае — происходит повторение действий, указанных в цикле. Повторяющиеся действия в цикле называются «телом цикла».

Зацикливание возникает, когда условие всегда выполняется.

for (int count=0; count for (int count=0; count
while (условие) команда; while (условие) do команда while (условие); do < команды; >while (условие);

Программа факториал n!=1*2*3*…*n

Источник: studopedia.su

1.3. Функции компилятора, компоновщика, загрузни!

1.3.1. Компилчюр как составная часть системы программирования

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

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

Сейчас, работая с системой программирования, пользователь, как правило, имеет дело только с ее интерфейсной частью, которую обычно представляет текстовый редактор с расширенными функциями. Запуск модуля компилятора и вся его работа происходят автоматически и скрытно от пользователя — разработчик видит только конечные результаты выполнения компилятора. Хотя многие современные системы программирования сохранили прежнюю возможность непосредственного взаимодействия разработчика с компилятором (это и Makefile, и так называемый «интерфейс командной строки»), но пользуется этими средствами только узкий круг профессионалов. Большинство пользователей систем программирования сейчас редко непосредственно сталкиваются с компиляторами.

Читайте также:
Что такое программа conexant hd audio

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

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

1.3.2. Компоновщик. Назначение и функции компоновщика

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

Современный Гуманитарный Университет 1 1

Источник: studfile.net

Презентация на тему Общая схема работы компилятора

Слайд 1курс лекций по дисциплине
Методы построения трансляторов
Преподаватель: к.т.н., доцент Карамзина А.Г.

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ТК
Тема:

Общая схема работы компилятора

курс лекций по дисциплинеМетоды построения трансляторовПреподаватель: к.т.н., доцент Карамзина А.Г.ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯУФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ

Слайд 2Методы построения трансляторов
Тема № 1
Общая схема работы компилятора

Методы построения трансляторовТема № 1Общая схема работы компилятора

Слайд 3
Общая схема работы компилятора
Определение и назначение транслятора
Транслятор – это программа,

которая переводит входную программу на исходном (входном) языке в эквивалентную

ей выходную программу на результирующем (выходном) языке.

Общая схема работы компилятораОпределение и назначение транслятораТранслятор – это программа, которая переводит входную программу на исходном (входном)

Слайд 4Общая схема работы компилятора
Компилятор – это транслятор, который осуществляет перевод

исходной программы в эквивалентную ей объектную программу на языке машинных

команд или на языке ассемблера.

Определение и назначение компилятора

Всякий компилятор является транслятором,
но не всякий транслятор является компилятором.

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

Общая схема работы компилятораКомпилятор – это транслятор, который осуществляет перевод исходной программы в эквивалентную ей объектную программу

Слайд 5
Общая схема работы компилятора
Определение и назначение интерпретатора
Интерпретатор – это

программа, которая воспринимает входную программу на исходном языке и сразу

выполняет ее.

Общая схема работы компилятораОпределение и назначение интерпретатора Интерпретатор – это программа, которая воспринимает входную программу на исходном

Слайд 6Этапы трансляции
Общая схема работы компилятора

Этапы трансляцииОбщая схема работы компилятора Исходная программаАнализТаблицаидентификаторовСинтез

Слайд 7Общая схема работы компилятора
Компилятор в целом с точки зрения формальных

языков выполняет
две основные функции:
является распознавателем для языка исходной программы

получив на вход цепочку символов входного языка, проверяет ее принадлежность языку и выявляет правила, по которым эта цепочка была построена — генератор цепочек – автор входной программы;

является генератором для языка результирующей программы

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

Общая схема работы компилятораКомпилятор в целом с точки зрения формальных языков выполняет две основные функции:является распознавателем для

Слайд 8Общая схема работы компилятора
Основные фазы компиляции
— Лексический анализ (сканер)

– это часть компилятора, которая читает литеры программы на исходном

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

Читайте также:
Программа для расчета функции

— Синтаксический анализ (разбор) – это основная часть компилятора на этапе анализа. Она выполняет выделение синтаксических конструкций в тексте исходной программы, обработанном лексическим анализатором. На этой же фазе компиляции проверяется синтаксическая правильность программы.

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

program m4;
var c:boolean;
a,b:real;
begin
if a>b then #:=a-b else a:=b*0.3;
end.

program m4;
var c:boolean;
a,b:real;
begin
if a:=b else a:=a-b then a:=b*0.3;
end.

program m4;
var c:boolean;
a,b:real;
begin
if a>b then c:=a-b else a:=n*0.3;
end.

Общая схема работы компилятораОсновные фазы компиляции - Лексический анализ (сканер) – это часть компилятора, которая читает литеры

Слайд 9Общая схема работы компилятора
Подготовка к генерации кода – это фаза,

на которой компилятором выполняются предварительные действия, непосредственно связанные с синтезом

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

Основные фазы компиляции

Генерация кода – это фаза, непосредственно связанная с порождением команд, составляющих предложения выходного языка и в целом текст результирующей программы. Это основная фаза на этапе синтеза результирующей программы.

Общая схема работы компилятораПодготовка к генерации кода – это фаза, на которой компилятором выполняются предварительные действия, непосредственно

Слайд 10Общая схема работы компилятора
Таблицы идентификаторов (таблицы символов) – это специальным

образом организованные наборы данных, служащие для хранения информации об элементах

исходной программы, которые затем используются для порождения текста результирующей программы.

Таблица идентификаторов в конкретной реализации компилятора может быть одна, или же таких таблиц может быть несколько.

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

Понятие «таблицы» вовсе не предполагает, что это хранилище данных должно быть организовано именно в виде таблиц или других массивов информации.

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

Слайд 11Общая схема работы компилятора
Многопроходные и однопроходные компиляторы
Реальные компиляторы, как правило,

выполняют трансляцию текста исходной программы за несколько проходов.
Проход – это

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

Однопроходный компилятор, получает на вход исходную программу и сразу же порождает результирующую объектную программу

Чаще всего один проход включает
в себя выполнение одной или нескольких фаз компиляции.
Результатом промежуточных проходов
является внутреннее представление исходной программы,
результатом последнего прохода
– результирующая объектная программа.

редкость, он возможен только для очень простых языков.

, – это идеальный вариант.

Реальные компиляторы являются многопроходными.

В современных системах программирования
нередко первый проход компилятора (лексический анализ кода)
выполняется параллельно с редактированием
кода исходной программы, то есть выполняется
лексический анализ «на лету», который является
функцией текстового редактора системы программирования,
заключающийся в поиске и выделении лексем входного языка
в тексте программы непосредственно
в процессе ее создания разработчиком.

Источник: theslide.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru