Почему мы разделяем компилятор на разные фазы? Объясните различные фазы компилятора?

3 Ответы


  • Компилятор - это большая и сложная программа, поэтому мы делим компилятор на разные фазы в зависимости от их сложности. Есть четыре обязательных этапа комплайера; Лексический анализ, синтаксический анализ, семантический анализ и генерация целевого кода. На первом этапе компиляции мы определяем лексические правила с помощью регулярного выражения. Лексический анализ также называется сканированием. На этом этапе проверяется наличие в исходной программе допустимых символов и слов. После детального анализа входной поток токенов сохраняется в буфере. Второй этап компиляции - это синтаксический анализ. На этом этапе мы определяем правила синтаксиса с помощью контекстно-свободной грамматики. Синтаксический анализ также называется парсером. Во время синтаксического анализа проверяются правила синтаксиса. На входе этой фазы используются токены, а на выходе - дерево синтаксического анализа или дерево синтаксиса. Третья фаза компилятора - семантический анализ.В основном слово семантическое означает «значение».

    На этом этапе мы определяем семантические правила с помощью грамматик атрибутов. Семантический анализ бывает двух типов; Проверка декларации и проверка типа. Входом этой фазы является дерево синтаксиса, а выходом - грамматика атрибутов. Последний и заключительный этап - создание целевого кода. После завершения анализа исходного кода последним шагом является его преобразование на целевой язык. Другими необязательными этапами являются оптимизатор исходного кода, оптимизатор целевого кода и генератор промежуточного кода.
  • Семантическое означает «значение».

    На этом этапе мы определяем семантические правила с помощью грамматик атрибутов. Семантический анализ бывает двух типов; Проверка декларации и проверка типа. Входом этой фазы является дерево синтаксиса, а выходом - грамматика атрибутов. Последний и заключительный этап - создание целевого кода. После завершения анализа исходного кода последним шагом является его преобразование на целевой язык. Другие необязательные этапы - Источник
  • Для выполнения различных задач на компьютере компилятор является средством коммуникации, которое переводит исходный язык на целевой язык. Компилятор позволяет пользователю выполнять индивидуальную задачу на машине. Изначально для написания компилятора использовался машинный язык. После некоторой разработки язык ассемблера и в наши дни язык высокого уровня используется для написания компилятора. Есть разные типы компиляторов; General Complier, Just in Time Compiler, Native Code Compiler, Cross Compiler, Source to Source Compiler, Multi-Pass Compiler, Single-Pass Compiler и т. Д. Общие компиляторы являются традиционными компиляторами. Эти компиляторы используют ассемблер.

    Just in Time Complier принимает исходный код в качестве входных данных и выполняет машинный язык. Примером этого компилятора является виртуальная машина Java. Часто байт-код используется как промежуточное представление. В Native Code Compliers и компилятор, и цель работают на одном компьютере. В кросс-компиляторе компилятор работает на другом компьютере, а целевой код - на другом компьютере. В компиляторе Source to Source вводится язык высокого уровня, а вывод также является языком высокого уровня. Например, компилятор C ++ в C. Многопроходный компилятор запускает компилятор от начальной фазы до конечной фазы отдельно. Каждая фаза после компиляции записывает свой вывод в файл на диске. Однопроходный компилятор считывает исходный код только один раз. В этом типе компилятора синтаксический анализатор использует лексический анализ и генерацию кода в качестве подпрограмм.

Напишите свой ответ

Ваш ответ появится после модерации