Методы трансляции. Общая модель компилятора. Фазы компиляции
Похожие презентации:
Лекция 5. Алгоритмы, программы и языки программирования
Виртуальные машины и трансляторы
Алгоритмы и способы их описания
Алгоритм. Свойства алгоритма. Дискретность
Эволюция и классификация языков программирования. Основные понятия языков программирования. Компиляция и интерпретация
Базовые методы и понятия программирования
Способы записи алгоритма: словесный, графический, программный
Языки программирования высокого уровня
Программирование. Язык программирования
Формальные языки и грамматики. Языки программирования. Классификация языков
1. Учебный курс
Методы трансляцииОбщая модель компилятора.
Фазы компиляции.
Шиманский Валерий Владимирович
Трансляторы бывают двух типов:
компиляторы (compiler) и интерпретаторы (interpreter). Процесс
компиляции можно представить как анализ (analysis) и синтез (synthesis).
программу на составляющие ее элементы (конструкции языка) и
создает промежуточное представление исходной программы.
Синтезирующая часть из промежуточного представления создает
новую программу, которую компьютер в состоянии понять. Такая
программа называется объектной программой. Объектная
программа может в дальнейшем выполняться без перетрансляции
Для простого исходного языка промежуточное представление не
нужно, и тогда вместо компиляции используется интерпретация –
это простой цикл обработки конструкций языка.
Интерпретатор выбирает очередную инструкцию языка из входного
потока, анализирует и выполняет ее. Затем выбирается следующая
инструкция и т.д. пока не встретится инструкция завершения
программы.
Программа на входном языке – цепочка символов, составляющая
исходную программу на языке программирования L1.
Объектная программа – код программы на целевом языке L2.
Компилятор K отображает множество L1 в множество L2, используя язык
реализации L3 – т. е.
L1 ➾ K L2
Джон Бэкус (англ. John Backus)
Интерпретатор
В отличие от компилятора интерпретатор не создает никакой новой
программы. Входными данными интерпретатора является не только
исходная программа, но и входные данные самой исходной программы.
Интерпретация позволяет выполнить более гибкую и лучшую диагностику
ошибок, чем компиляция. В современных трансляторах часто
используются как элементы компиляции, так и интерпретации.
Объектная программа
Объектная программа может быть:
последовательностью абсолютных машинных
команд
последовательностью перемещаемых
машинных команд
программой на языке ассемблера
программой на некотором другом языке
Трансляция в ассемблер
Генерация кода для платформы .NET выполняетсяется
высокоуровневый ассемблер, максимально
абстрагированный от конкретных целевых платформ
Кросс-транслятор — это вид транслятора, который переводит программу,
записанную в нотации одного языка программирования и выполняющуюся в
одной инструментальной среде, на одной компьютере, который характеризуется
своим операционным окружением и/или архитектурой, в код вычислительной
системы другой среды другого компьютера.
Допустим у нас есть разрабатываемый компьютер M с языком
ассемблера A и компьютер K с языком ассемблера A1.
Есть компилятор P языка ассемблер для компьютера K (P ➾ K A1), а сам
компьютер М по каким-то причинам не доступен либо пока ещё не
существует компилятор P языка ассемблер для компьютера M (P ➾ M A).
Нам необходимо создать компилятор L для компьютер M (L ➾ K A).
В такой ситуации мы можем использовать K в качестве
инструментальной машины и написать компилятор L для компьютера M
(L ➾K A), который принято называть кросс-транслятором (crosscompiler).
На основе его можно разрабатывать программы, вплоть до операционной
системы для целевого компьютера M. Как только машина M станет
доступной, он и разработанное на его основе ПО можно перенести на M.
Виртуальная машина
Концепция виртуальной машины (virtual machine) предполагает, что
исходный язык транслируется в коды некоторой специально
разработанной машины, которую никто не собирается реализовывать «в
железе». Затем для каждой целевой платформы пишется интерпретатор
виртуальной машины.
Никлаус Вирт (нем. Niklaus Wirth)
Компиляция «на лету» (Just-In-Time compiling)
Байт-код интерпретируется виртуальной машиной –
Java Virtual Machine (Java VM, JVM) — виртуальная машина Java —
Runtime Environment (JRE)
Microsoft Intermediate Language (MSIL, «Промежуточный
язык фирмы Майкрософт») в Visual Studio
Фазы процесса трансляции (compilation phases)
Процесс создания компилятора можно свести к решению нескольких
задач, которые распределяются между фазами компиляции. Обычно
компилятор состоит из следующих фаз:
лексический анализ
синтаксический анализ
семантический (видозависимый) анализ
оптимизация
генерация кода.
Дополнительно могут быть использованы фазы перевода в
промежуточное представление, семантического анализа компонент
промежуточного представления, анализа корректности и оптимизации
промежуточного представления
Интерпретатор отличается тем, что фаза генерации кода обычно
заменяется фазой эмуляции элементов промежуточного
представления или объектной модели языка. Кроме того, в
интерпретаторе обычно не проводится оптимизация
промежуточного представления, а сразу же осуществляется его
эмуляция.
Лексический анализатор
выполняет распознавание лексем языка и замену их соответствующими кодами
Лексический анализатор читает поток символов, составляющих исходную
программу, и группирует эти символы в значащие последовательности,
называющиеся лексемами. Для каждой лексемы анализатор строит
выходной токен (token) вида:
<имя_токена, значение_атрибута>
Лексический анализ
position = position + rate*60;
Лексический
анализ
id1 = id2 + id3*60;
Лексический анализатор читает поток символов, составляющих исходную программу,
и группирует эти символы в значащие последовательности, называющиеся лексемами.
Для каждой лексемы анализатор строит выходной токен (token)
Создание токенов и таблицы лексем
Синтаксический анализатор (syntax analyzer, parser)
которых состоит исходная программа, правилам грамматики этого языка.
Он получает на вход результат работы лексического анализатора и
разбирает его в соответствии с некоторой грамматикой.
Синтаксический анализ
id1 = id2 + id3*60;
Syntax analysis
=
id1
+
id2
*
id3
60
В дереве разбора программы внутренние узлы соответствуют
операциям, а листья представляют операнды.
Видозависимый анализ (type checking),
также называемый семантическим анализом (semantic analysis), обычно
заключается в проверке правильности типа и вида всех идентификаторов
и данных, используемых в программе.
Видозависимый анализ
=
+
id1
id2
*
id3
int_to_real
60
Основная цель фазы оптимизации (code optimization)
заключается в преобразовании промежуточного представления
программы в целях повышения эффективности результирующей
объектной программы.
Решаются проблемы уменьшения избыточности программы по затратам
времени и памяти. При оптимизации происходит преобразование
исходной программы в промежуточную (например, польскую) форму
записи. Оптимизация промежуточного кода — выделение общих
подвыражений и вычисление константных подвыражений.
Фаза генерации кода (code generator)
Генератор кода получает в качестве входных данных промежуточное
представление исходной программы и отображает его в целевой язык
Генерация кода
temp1 = id3* 60.0
id1 = id2 + temp1
Генератор
ldsfld
ldc.r8 60.
mul
stloc
ldsfld id2
ldlo с
add
stsfld id1
кода
id3
temp
temp
Под просмотром (или проходом) компилятора
понимается процесс обработки всего, возможно, уже преобразованного,
Одна или несколько фаз компиляции могут выполняться на одном просмотре.
Например, лексический анализ и синтаксический анализ часто выполняются на
одном просмотре, т.е. синтаксический анализатор может обращается к
лексическому анализатору за очередной лексемой лишь по мере необходимости.
С другой стороны, некоторые оптимизации могут выполняться на нескольких
просмотрах.
Обобщенная структура транслятора
Учитывая схожесть компилятора и интерпретатора, рассмотрим фазы,
существующие в компиляторе. В нем выделяются:
Фаза лексического анализа.
Фаза синтаксического анализа, состоящая из: распознавания
синтаксической структуры; семантического разбора, в процессе
которого осуществляется работа с таблицами, порождение
промежуточного семантического представления или объектной модели
языка.
Фаза генерации кода, осуществляющая: семантический анализ
компонент промежуточного представления или объектной модели
языка; перевод промежуточного представления или объектной модели
в объектный код.
Наряду с основными фазами процесса трансляции возможны также
дополнительные фазы:
Фаза исследования и оптимизации промежуточного
представления, состоящая из:
— анализа корректности промежуточного представления;
— оптимизации промежуточного представления.
Обобщенная структура компилятора
Обобщенная структура интерпретатора
Обобщенная схема синтаксического анализатора
Варианты взаимодействия блоков транслятора
Организация процессов трансляции, определяющая реализацию
основных фаз, может осуществляться различным образом.
Это определяется различными вариантами взаимодействия блоков
генератора кода. Несмотря на одинаковый конечный результат,
различные варианты взаимодействия блоков транслятора
обеспечивают различные варианты хранения промежуточных данных.
Можно выделить два основных варианта взаимодействия блоков
транслятора:
многопроходную организацию, при которой каждая из фаз является
независимым процессом, передающим управление следующей фазе
только после окончания полной обработки своих данных;
однопроходную организацию, при которой все фазы представляют
единый процесс и передают друг другу данные небольшими
фрагментами.
На основе двух основных вариантов можно также создавать их
Многопроходная схема взаимодействия блоков компилятора
Однопроходная схема взаимодействия блоков компилятора при
управлении, инициируемом лексическим анализатором
Однопроходная схема взаимодействия блоков компилятора при
управлении, инициируемом синтаксическим анализатором
Однопроходная схема взаимодействия блоков интерпретатора
2-х проходная схема с генерацией полного промежуточного представления
Эмуляция промежуточного представления
Эмуляция скомпилированного объектного кода
Стадии трансляции.
Последняя схема
English Русский Правила
Языки программирования и методы трансляции Опалева Э., Самойленко В. ISBN 5-94157-327-8
Категории
Среднее профессиональное образование (14+) (1983)Среднее профессиональное образование
СПО: Учебники и учебные пособия из списка ПООП (117)
Астрономия (8)
Биология (19)
Военное дело (11)
География, метеорология и картография (6)
Геология, геодезия и разведка полезных ископаемых (9)
Иностранные языки (89)
Информатика и вычислительная техника (116)
Информационная безопасность (2)
История и философия (31)
Лесное, парковое и охотничье хозяйство (18)
Математика и геометрия (13)
Медицина (104)
Обществознание (36)
Психология (17)
Русский язык и литература (41)
Социология и социальная работа (17)
Физика и математика (78)
Физкультура и спорт (5)
Философия (3)
Химия и технологии химической промышленности (21)
Экология и природопользование (19)
Электроника, радио-, электро- и схемотехника (83)
Юриспруденция и правоведение (78)
Естествознание (2)
Технология деревообрабатывающих производств, столярное дело. Мебельное производство. (6)
Укрупненная группа специальностей (УГС) (34285)Укрупненная группа специальностей
01.00.00 Математика и механика (1037)
02.00.00 Компьютерные и информационные науки (3017)
03.00.00 Физика и астрономия (521)
04.00.00 Химия (342)
05.00.00 Науки о Земле (331)
06.00.00 Биологические науки (311)
07.00.00 Архитектура (390)
08.00.00 Техника и технологии строительства (381)
09.00.00 Информатика и вычислительная техника (3727)
10.00.00 Информационная безопасность (337)
11.00.00 Электроника, радиотехника и системы связи (1205)
12.00.00 Фотоника, приборостроение, оптические и биотехнические системы и технологии (300)
13.00.00 Электро- и теплоэнергетика (316)
14.00.00 Ядерная энергетика и технологии (125)
15.00.00 Машиностроение (487)
16.00.00 Физико-технические науки и технологии (1208)
17.00.00 Оружие и системы вооружения (67)
18.00.00 Химические технологии (231)
19. 00.00 Промышленная экология и биотехнологии (234)
20.00.00 Техносферная безопасность и природообустройство (307)
21.00.00 Прикладная геология, горное дело, нефтегазовое дело и геодезия (948)
22.00.00 Технологии материалов (339)
23.00.00 Техника и технологии наземного транспорта (148)
24.00.00 Авиационная и ракетно-космическая техника (161)
25.00.00 Аэронавигация и эксплуатация авиационной и ракетно-космической техники (158)
26.00.00 Техника и технологии кораблестроения и водного транспорта (75)
27.00.00 Управление в технических системах (388)
28.00.00 Нанотехнологии и наноматериалы (183)
29.00.00 Технологии легкой промышленности (371)
30.00.00 Фундаментальная медицина (254)
31.00.00 Клиническая медицина (494)
32.00.00 Науки о здоровье и практическая медицина (212)
33.00.00 Фармация (87)
34.00.00 Сестринское дело (45)
35.00.00 Сельское, лесное и рыбное хозяйство (354)
36.00.00 Ветеринария и зоотехния (112)
37. 00.00 Психологические науки (1884)
38.00.00 Экономика и управление (6061)
39.00.00 Социология и социальная работа (612)
40.00.00 Юриспруденция (3706)
41.00.00 Политические науки и регионоведение (915)
42.00.00 Средства массовой информации и информационно-библиотечное дело (279)
43.00.00 Сервис и туризм (108)
44.00.00 Образование и педагогические науки (3051)
45.00.00 Языкознание и литературоведение (3716)
46.00.00 История и археология (685)
47.00.00 Философия, этика и религиоведение (755)
48.00.00 Теология (179)
49.00.00 Физическая культура и спорт (460)
50.00.00 Искусствознание (428)
51.00.00 Культуроведение и социокультурные проекты (561)
52.00.00 Сценические искусства и литературное творчество (73)
53.00.00 Музыкальное искусство (134)
54.00.00 Изобразительное и прикладные виды искусств (297)
55.00.00 Экранные искусства (115)
56.00.00 Военное управление (162)
57.00.00 Обеспечение государственной безопасности (64)
Контент с ограничением по возрасту 18+ (11)
Остаться в выбранном разделе
Назад к каталогу
ISBN 5-94157-327-8
Авторы:
Опалева Э. , Самойленко В.
Тип издания:
Учебное пособие
Издательство:
Санкт-Петербург: БХВ-Петербург
Год:
2014
Аннотация
Учебное пособие содержит систематическое изложение теоретических основ перевода и компиляции. Рассмотрены общие вопросы разработки, описания и реализации языков программирования, формальные методы описания синтаксиса и семантики языков программирования, методы синтаксического анализа современных языков программирования. Приводится методика разработки описания перевода и пример использования этой методики для построения атрибутной транслирующей грамматики.
Библиографическое описание Скопировать библиографическое описание
Опалева Э. Языки программирования и методы трансляции / Э. Опалева, В. Самойленко. — Санкт-Петербург : БХВ-Петербург, 2014. — 480 с. — ISBN 5-94157-327-8. — URL: https://ibooks.ru/bookshelf/18588/reading (дата обращения: 27.10.2022). — Текст: электронный.
Каковы основные приемы перевода?
По своей сути перевод — это перенос значения письменного текста с одного языка на другой. Хотя переводчик выберет только один метод для всего текста, существует ряд методов, которые можно использовать для отдельных слов и фраз. Тщательно выбирая правильную технику, переводчик может максимально точно передать каждый языковой элемент.
Вот десять распространенных методов перевода, которые мы можем использовать для перевода вашего документа и достижения наилучшего перевода.
Методы прямого перевода
Эти методы перевода используются, когда понятия и структура исходного языка могут быть использованы в целевом языке.
1. Заимствование
Заимствование – это когда слова или выражения берутся непосредственно из исходного текста и переносятся в целевой язык. Этот метод часто используется, когда нет эквивалента целевого языка, такого как еда или одежда, и может помочь сохранить культурный контекст исходного текста.
Английский язык полон заимствованных слов, которые стали частью нашего повседневного языка. Если заимствованный термин еще не вошел в обиход, он обычно пишется курсивом.
Пример: кафе (французский), гамбургер (немецкий), кимоно (японский) и кимчи (корейский).
2. Калька (заимствованный перевод)
Это дословный перевод фразы с одного языка на другой, создание нового термина на целевом языке. Другими словами, это дословный перевод заимствованного слова.
Пример: английский термин «небоскреб» переводится на французский язык как «gatter-ciel».
3. Дословный перевод
При буквальном переводе каждое слово переводится напрямую. Целевой текст должен быть идиоматичным и сохранять тот же порядок слов, значение и стиль, что и исходный текст.
Этот метод может упустить нюансы исходного текста и возможен только с очень близкими языками и культурами.
Пример: английское выражение «Я хочу стакан воды» будет буквально переведено на французский язык как «Je veux un verre d’eau».
Методы косвенного перевода
Методы косвенного или косвенного перевода используются, когда два языка и культуры находятся далеко друг от друга. Эти методы изменяют структурные и концептуальные элементы, чтобы сохранить смысл и нюансы текста.
1. Транспозиция
Транспозиция предполагает переход из одной грамматической категории в другую с сохранением значения. Этот метод перевода часто необходим между языками с разными грамматическими структурами .
Пример. Французское предложение «Je l’ai vu avant la rentrée» можно перевести на английский как «Я видел ее перед началом школы». Это превращает существительное «la rantrée» в глагол.
2. Модуляция
Это включает в себя изменение точки зрения, корректировку написанного, чтобы выразить ту же идею и сохранить смысл. Это переводит текст таким образом, который соответствует естественным образцам целевого языка.
Пример: Говорящий по-французски будет говорить о «dernier étage» [буквально; последний этап] здания, в то время как англоговорящий будет ссылаться на «верхний этаж».
3. Эквивалентность/переформулировка
Подобно модуляции, это позволяет сохранить значение выражения, имени или пословицы, найдя эквивалент в целевом языке.
Пример: фраза «être sur son 31» [буквально; to be on one’s тридцать один] было бы французским эквивалентом английской фразы «быть одетым в пух и прах».
4. Адаптация
Также известная как культурная замена, культурные элементы исходного языка заменяются эквивалентными культурными элементами целевого языка. Это делает текст более знакомым и легким для понимания, особенно с единицами измерения.
Пример: Cyclisme (французский) = футбол (Великобритания) = бейсбол (США).
5. Компенсация
Этот метод компенсирует невозможность перевести нюанс или фразу в одном конкретном месте, выражая информацию в другом месте документа.
Пример: В то время как в английском языке есть только один способ сказать «ты», во французском есть и «ту» (неформальное), и «воус» (формальное). Выбирая определенные слова в другом месте текста, переводчик может компенсировать потерю нюансов.
6. Сокращение
При сокращении переводчик удаляет любые слова, образующие исходный текст, которые считаются лишними в языке перевода.
Пример: Французская «sciences politiques» [буквально; политические науки] можно перевести на английский как просто «политика».
7. Расширение
Противоположное сокращению, когда слова добавляются для сохранения смысла. Это может быть связано с различиями в структуре предложения, грамматике или терминологии.
Пример: Обратное сокращение, «politics» на английском языке будет переведено как «sciences politiques» на французском языке. Поскольку во французском языке также используются гендерные артикли, расширение при переводе с английского на французский является естественным.
Выбор правильных методов для наилучшего перевода
Правильный метод зависит от конкретного случая, с учетом типа текста, целевой аудитории и конечной цели вашего перевода. Наша команда профессиональных переводчиков использует свой опыт и знания обоих языков, чтобы выбрать правильную технику для вашего текста, что обеспечит максимально точный перевод.
5 лучших методов перевода. Методы перевода
Хотя многие люди считают, что перевод означает брать слова из одного языка и выражать их на другом языке, это гораздо больше. В зависимости от содержания учитывайте множество различий в культуре, манере речи и законодательстве, прежде чем переводить свои материалы. Каковы различия между процедурами и методами перевода и , как упростить процесс, используя лучшие методы перевода?
Что такое метод перевода?
По словам Питера Ньюмарка, способов перевода относятся к действиям над всем документом . С другой стороны, процедуры перевода применяются к более мелким единицам, таким как предложения. Выбор подходящего метода облегчает процесс перевода, чтобы контент надлежащим образом передал правильное значение в целевой культуре. В Acculing мы понимаем, что разные обстоятельства требуют разных переводов, и поэтому мы соответствующим образом адаптируем наши стратегии и методы.
Каковы наилучшие методы перевода?
1. Дословный перевод
Лингвисты переводят отдельные слова в соответствии с их наиболее дословным значением практически без учета контекста. Поскольку слово в слово не принимает во внимание грамматические, семантические или культурные различия между языками, исходный порядок слов остается прежним. Как правило, дословный перевод не обеспечивает качественного перевода (вспомните машинный перевод), хотя читатель должен отметить, что дословный перевод хорошо работает с такими документами, как отчеты о медицинских исследованиях.
2. Дословный перевод
Когда дело доходит до дословного перевода, лингвисты переводят грамматические структуры исходного текста в близкие эквиваленты на языке перевода. При этом слов переводятся без учета коннотаций между ними . В отличие от дословного метода, дословный перевод фокусируется на контексте и стремится найти метафорические эквиваленты в целевом языке.
3. Коммуникативный перевод
Отражение точного контекстуального значения исходного текста на языке перевода определяет коммуникативный перевод. Читатели получают полностью понятное, приемлемое сообщение. Коммуникативный перевод учитывает контекст, культуру, грамматику и семантику, поэтому его предпочитают многие специалисты. Хотя это не всегда самый технически точный вариант, он передает смысл естественным образом и часто используется при переводе текста, который содержит культурно-специфические идиомы, пословицы или игру слов.
4. Семантический перевод
В сценарии семантического перевода стремятся передать синтаксические и семантические структуры исходного языка на целевом языке. Этот метод наиболее точно воспроизводит исходный текст на иностранном языке, сохраняя при этом контекст и культуру. В то же время семантический перевод делает больший акцент на эстетической ценности исходного текста, является более гибким и дает переводчику больше свободы для творчества.
5. Адаптация
Адаптация использует модификацию или даже полное переписывание языка исходного текста для поиска эквивалентов на целевом языке, при этом передавая то же самое сообщение, что и исходный контент. Часто называемые транскреацией, специализированные лингвисты могут помочь при представлении сообщений или идей способами, полностью отличными от исходного содержания, для предполагаемой публики.
Несмотря на то, что существуют различные методы перевода , качественный перевод не может быть получен с помощью какого-либо единственного метода. В зависимости от исходного и целевого языка, аудитории, культуры и семантики крайне важно сочетать различные стратегии для создания удовлетворительного перевода, который найдет отклик у мировой аудитории во всем мире.