Системное программное обеспечение: Основы трансляции. Карпушин А.Н - 21 стр.

UptoLike

23
работке компилятора для некоторого языка программирования возникает зада-
ча, которая требует связать между собой эти методы задания языков.
Разработчики трансляторов всегда имеют дело с уже определенным язы-
ком программирования. Грамматика для синтаксических конструкций этого
языка известна. Она, как правило, четко описана в стандарте языка, и хотя фор-
ма описания может быть произвольной, ее всегда можно преобразовать к тре-
буемому виду (например, к форме Бэкуса-Наура). Задача разработчиков заклю-
чается в том, чтобы построить распознаватель для заданного языка, который за-
тем будет основой синтаксического анализатора в трансляторе.
Таким образом, задача разбора в общем виде заключается в следую-
щем: на основе имеющейся грамматики некоторого языка построить рас-
познаватель для этого языка.
Задача разбора в общем виде может быть решена не для всех типов языков.
Но как было сказано выше, разработчиков трансляторов интересуют, прежде
всего, контекстно-свободные и регулярные языки. Для данных типов языков
доказано, что задача разбора для них разрешима.
Поскольку языки программирования не являются чисто формальными
языками и несут в себе некоторый смысл (семантику), то задача разбора для
создания реальных компиляторов понимается несколько шире, чем она форму-
лируется для чисто формальных языков. Компилятор должен не просто дать от-
вет, принадлежит или нет входная цепочка символов заданному языку, но и оп-
ределить ее смысловую нагрузку. Для этого необходимо выявить те правила
грамматики, на основании которых цепочка была построена. Фактически рабо-
та распознавателей в составе компиляторов сводится к построению в том или
ином виде дерева разбора входной цепочки.
Кроме того, если входная цепочка символов не принадлежит заданному
языкуисходная программа содержит ошибку, – разработчику программы не
интересно просто узнать сам факт наличия ошибки. В данном случае задача
разбора также расширяется: распознаватель в составе компилятора должен не
только установить факт присутствия ошибки во входной программе, но и по
возможности определить тип ошибки и то место в цепочке символов, где она
встречается.
4. Трансляторы, интерпретаторы,
компиляторы. Этапы трансляции.
Общая схема работы транслятора
Трансляторы
Транслятор это программа, которая переводит входную программу на
исходном (входном) языке в эквивалентную ей выходную программу на ре-
зультирующем (выходном) языке. Как видно из определения, в работе трансля-
тора всегда участвуют три программы:
1. Сам транслятор является программой;