Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
13. ТЯП-госы.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
502.27 Кб
Скачать

Задачи синтаксич анализа:

  • найти и выделить основные синтаксические конструкции в тексте входной программы,

  • установить тип и про­верить правильность каждой синтаксической конструкции,

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

В основе синтакс. анализатора лежит распознаватель текста входн прогр-мы на основе грамматики входного языка. Как правило, синтаксич конструкции языков программир-ия могут быть описаны с помощью КС-грамматик, реже встречаются языки, которые могут быть описаны с помощью регулярных грамматик. Чаще всего регулярные грамматики применимы к языкам ассемблера, а языки высокого уровня построены на основе синтаксиса КС-языков.

Распознаватель дает ответ на вопрос о том, принадлежит или нет цепочка вход­ных символов заданному языку – это основная задача синтаксического анализатора.

Синтаксический разбор — это основная часть компилятора на этапе анализа. Без выполнения синтаксич разбора работа компилятора бессмысленна, в то время как лексич разбор в принципе явл-ся необязательной фазой. Все задачи по проверке синтаксиса входного языка могут быть решены на этапе синтаксического разбора. Лексич анализатор только позволяет избавить сложный по структуре синтаксич анализатор от решения примитивных задач по выявлению и запоминанию лексем входной программы.

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

Основа любого синтаксич анализатора - распознаватель, построенный на основе какого-либо класса КС-грамматик. Поэтому главную роль в том, как функционирует синтаксич анализатор и какой алгоритм лежит в его основе, играют принципы построения распознава­телей КС-языков. Без применения этих принципов невозможно выполнить эффективный синтаксич разбор предложений входного языка.

Роль синтаксического анализатора

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

Имеется три основных типа синтаксических анализаторов грамматик.

  1. Универсальные методы разбора, такие как алгоритмы Кока-Янгера-Касами или Эрли, могут работать с любой грамматикой. Однако эти методы слишком неэффективны для использования в промышленных компиляторах.

  2. Нисходящие (сверху вниз) методы синтаксического анализа. Нисходящие синтаксические анализаторы строят дерево разбора сверху (от корня) вниз (к листьям). Входной по­ток синтаксического анализатора сканируется посимвольно слева направо.

  3. Восходящие (снизу вверх) методы синтаксического анализа. Восходящие методы начинают построение дерева разбора с листьев и идут к корню. Входной по­ток также сканируется посимвольно слева направо.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]