ВУЗ:
Составители:
24
2. Исходными данными для работы транслятора служит текст входной про-
граммы – некоторая последовательность предложений входного языка про-
граммирования. Обычно это символьный файл, но этот файл должен со-
держать текст программы, удовлетворяющий синтаксическим и семанти-
ческим требованиям входного языка. Кроме того, этот файл несет в себе
некоторый смысл, определяемый семантикой входного языка.
3. Выходными данными транслятора является текст результирующей про-
граммы. Результирующая программа строится по синтаксическим прави-
лам, заданным в выходном языке транслятора, а ее смысл определяется
семантикой выходного языка.
Важным требованием в определении транслятора является эк-
вивалентность входной и выходной программ. Эквивалентность двух программ
означает совпадение их смысла с точки зрения семантики входного языка (для
исходной программы) и семантики выходного языка (для результирующей про-
граммы). Без выполнения этого требования сам транслятор теряет всякий прак-
тический смысл.
Если исходная программа содержит хотя бы одну ошибку, то результатом
работы транслятора будет сообщение об ошибке (как правило, с допол-
нительными пояснениями и указанием места ошибки в исходной программе).
Компиляторы
Компилятор – это транслятор, который осуществляет перевод исходной
программы в эквивалентную ей объектную программу на языке машинных ко-
манд или на языке ассемблера. Таким образом, компилятор отличается от
транслятора лишь тем, что его результирующая программа всегда должна быть
написана на языке машинных кодов или на языке ассемблера. Результирующая
программа транслятора же, в общем случае, может быть написана на любом
языке – возможен, например, транслятор программ с языка Pascal на язык С.
Результирующая программа компилятора называется «объектной про-
граммой» или «объектным кодом». Файл, в который она записана, обычно на-
зывается «объектным файлом». Даже в том случае, когда результирующая про-
грамма порождается на языке машинных команд, между объектной программой
(объектным файлом) и исполняемой программой (исполняемым файлом) есть
существенная разница. Порожденная компилятором программа не может непо-
средственно выполняться на компьютере, так как она не привязана к конкрет-
ной области памяти, где должны располагаться ее код и данные.
Следует отметить, что существуют компиляторы, в которых результирую-
щая программа создается не на языке машинных команд или ассемблера, а на
некотором промежуточном языке. Сам по себе этот промежуточный язык не
может непосредственно исполняться на компьютере, а требует специального
промежуточного интерпретатора для выполнения написанных на нем про-
грамм. Хотя в данном случае термин «транслятор» был бы, наверное, более
правильным, в литературе употребляется понятие «компилятор», поскольку
промежуточный язык является языком очень низкого уровня, будучи
родственным машинным командам и языкам ассемблера.
Страницы
- « первая
- ‹ предыдущая
- …
- 20
- 21
- 22
- 23
- 24
- …
- следующая ›
- последняя »