~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 83D182F0D4F9706EB9E734462362892A__1701774780 ✰
Заголовок документа оригинал.:
✰ Multi-pass compiler - Wikipedia ✰
Заголовок документа перевод.:
✰ Многопроходный компилятор — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Multi-pass_compiler ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/83/2a/83d182f0d4f9706eb9e734462362892a.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/83/2a/83d182f0d4f9706eb9e734462362892a__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 10:31:16 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 5 December 2023, at 14:13 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Многопроходный компилятор — Википедия Jump to content

Многопроходный компилятор

Из Википедии, бесплатной энциклопедии

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

Многопроходные компиляторы иногда называют широкими компиляторами . [1] имея в виду больший объем проходов: они могут «видеть» всю компилируемую программу, а не только небольшую ее часть. Таким образом, более широкая область действия, доступная этим компиляторам, позволяет лучше генерировать код (например, меньший размер кода, более быстрый код) по сравнению с результатами однопроходных компиляторов за счет увеличения времени компилятора и потребления памяти. Кроме того, некоторые языки не могут быть скомпилированы за один проход из-за особенностей их конструкции.

Типичный многопроходный компилятор [ править ]

Лексический анализ [ править ]

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

Синтаксический анализ [ править ]

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

Семантический анализ [ править ]

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

если   (  cond  )   { 
   ...  
 }   еще   { 
   ... 
 } 

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

Генерация кода [ править ]

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

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

Преимущества многопроходных компиляторов [ править ]

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

Более выразительные языки . Несколько проходов устраняют необходимость в предварительных объявлениях, позволяя элегантно реализовать взаимную рекурсию. Яркими примерами языков, требующих предварительных объявлений из-за необходимости компиляции за один проход, являются C и Pascal , тогда как в Java нет предварительных объявлений.

Ссылки [ править ]

  1. ^ Грюн, Дик; ван Реувейк, Кес; Баль, Анри; Джейкобс, Сериэль; Лангендоен, Коэн (2012). Современный дизайн компилятора (второе изд.). Амстердам, Нидерланды: Springer. п. 27. ISBN  978-1-4939-4472-9 .
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 83D182F0D4F9706EB9E734462362892A__1701774780
URL1:https://en.wikipedia.org/wiki/Multi-pass_compiler
Заголовок, (Title) документа по адресу, URL1:
Multi-pass compiler - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)