Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spoPresentation2

.pdf
Скачиваний:
6
Добавлен:
11.05.2015
Размер:
4.74 Mб
Скачать

Нисходящий синтаксический анализ

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

проверка следующих 2-3 символов, что позволяет точнее выбрать альтернативу

251

Нисходящий синтаксический анализ

учет уже проверенных альтернатив, если

ряд альтернатив имеет общие префиксы и неприемлемость какой-либо из них устанавливается на основе этих префиксов, то все эти альтернативы могут быть пропущены

ограничение глубины просмотра

252

Нисходящий синтаксический анализ

Вопрос локализации ошибок

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

Для локализации ошибки все альтернативы подходят одинаково, поэтому в грамматику требуется вставлять правила, описывающие ошибки (неправильные конструкции)

253

Cинтаксический распознаватель с возвратом

Это самый простой тип нисходящих распознавателей для КС-языков, они моделируют недетерминированный МПА

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

Алгоритм, по которому функционирует такой распознаватель, называется алгоритмом с подбором альтернатив

254

Cинтаксический распознаватель с возвратом

Алгоритм запоминает все возможные следующие состояния, выбирает одно из них, переходит в него и так до тех пор, пока не будет достигнуто конечное состояние, тогда строка принимается

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

255

Cинтаксический распознаватель с возвратом

Если все возможные варианты перебраны, а конечное состояние не достигнуто, то строка не принадлежит языку

Время выполнения алгоритма с возвратом имеет экспоненциальную зависимость от длины входной цепочки, а требуемый объем памяти – линейную зависимость

Хотя такие алгоритмы и просты в реализации, но практически применимы только для КС-языков с малой длиной входных предложений языка

256

Построение МП-автомата с возвратом

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

Стек используется для размещения сентенциальной формы, в начале это аксиома

Очередная сентенциальная форма получается заменой верхнего нетерминала стека (вершина стека слева)

Автомат обладает только одним состоянием и принимает входную строку

опустошением стека

257

 

Построение МП-автомата с возвратом

Полученный МПА в общем случае не является детерминированным, что при распознавании создает проблему выбора нужного правила

Можно нумеровать все альтернативы и выбирать альтернативу с меньшим номером

Для учета выбранных альтернатив алгоритму потребуется второй стек

Для реализации алгоритма работы такого МП-автомата исходная грамматика не должна быть леворекурсивной

Вершину стека будем считать слева

258

Построение МП-автомата с возвратом

Дано: КС грамматика G(T,N,P,S)

Получить: эквивалентный ей МПА M =

(Q,A,Z,G, q0, z0, F), задающий тот же язык L(G)

= L(М)

Дополнительные условия:

Грамматика G не должна содержать левой рекурсии

Вершина стека находится слева

259

Построение МП-автомата с возвратом

1. Q = {q}; q0 = q; F = ; Z = T N, A =T, z0=S

2. G (q, O, X) = { (q, E) | XoE P, X N, E V* }

Нетерминал на вершине стека замещается по правилу грамматики. O означает, что из

входной цепочки символ не берется, т.е. цепочка остается без изменений

3. G (q, a, a) = (q,O), a T . Из стека

выталкивается символ, совпадающий со входным и перемещается указатель чтения

260

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