Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЛО.DOC
Скачиваний:
39
Добавлен:
23.03.2016
Размер:
534.53 Кб
Скачать
      1. Общие требования к языкам формулировки задания.

  1. За счет стандартизации лексических структур языков должна быть обеспечена возможность проведения единообразного лексического анализа.

  1. Синтаксическая структура языка должна обеспечивать детерминированный анализ.

  2. Допускаемая в разумных пределах избыточность (однозначное применение ключевых слов и разделителей и однозначное завершение синтаксических единиц) должна обеспечивать достаточную степень возможности обнаружения и обработки ошибок.

  3. Максимально простое соответствие между символами языка и сценами должно обеспечить несложное преобразование текста задания в сценарий.

1.1.2. Требования к языкам формулировки задания с точки зрения их использования.

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

  2. Простой и наглядный синтаксис и семантика.

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

  4. Модульное построение языка и возможность его расширения.

1.2.Лексический и синтаксический анализ.

Различают следующие виды лексем:

  • идентификаторы;

  • ключевые слова;

  • числа;

  • последовательности знаков;

  • особые знаки и их комбинации;

  • комментарии.

Каждой лексеме (кроме комментариев) приписывается код. Комментарии и пробелы подавляются. Всем идентификаторам приписывается одинаковый код, также как числам и последовательностям знаков. Для лексического анализа порядок следования лексем не важен. Анализ происходит до тех пор пока не встретится лексема «конец текста».

Пример1: Структура лексического анализа.

СЛ – модуль, распознающий следующую лексему;

СЗ – модуль, распознающий следующий знак;

БУ – буква;

ЦИ – цифра.

Допустимы следующие символы:

/* */, —подавляются,

идентификаторы (начинаются с буквы) – код 9,

:= – код 10,

:> – код 11,

: – код 12,

|| – код 13,

; – код 14,

, – код 15,

( – код 16,

) – код 17,

 – код 0.

Если верно, то направо, если неверно, то вниз.

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

Для синтаксического анализа могут применяться сценарии лексического анализа со следующими изменениями:

  • проверки относятся не к последнему знаку, а к коду последней лексемы;

  • функция «возврат кода» лексему кодом не заменяет. Параметр служит для различения мест возврата;

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

  • ошибка приводит к остановке анализа.

Пример2: Структура синтаксического анализа.

Каждый подсценарий анализирует определенные отрезки текста, которые называются синтаксическими единицами: ввод, вывод, имя и т.д. В каждом сценарии определенные лексемы проверяются непосредственно, а для проверки синтаксических единиц вызываются другие сценарии.

Пример3: Вид подсценария.

Пример4: Программа, написанная на входном языке,анализ которого разобран выше.

СТАРТ СОБРАТЬ

В SD, ZG, BK;

ИЗ SDO, AUSG, AUSZ;

AUSG:=AG(BK:>(SD||ZG));

SDO:=SD||ZG;

AUSZ:=BK:>ZG;

СТОП.

Описанный выше принцип анализа называется LF(1) – метод или метод рекурсивного спуска.

При синтаксическом анализе строится дерево синтаксического разбора, листья которого – лексемы исходного текста, вершины отвечают синтаксическим единицам, каждая из которых состоит из лексем либо из других синтаксических единиц.

Пример5: Построение синтаксического дерева.

Выражение: SDO:=SD||ZG;

Для машины удобнее одномерное представление дерева в виде свернутой строки.

[[SDO]результат:=[[SD]операнд[||]оператор[ZG]операнд]выражение;]присваивание.

Такой текст может быть порожден в ходе анализа по следующему алгоритму:

  1. При вызове модуля СЛ выдается последняя проанализированная лексема.

  2. При входе в сценарий выдается открывающая синтаксическая скобка.

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