Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO_shpory.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.65 Mб
Скачать

60. Методы синтаксического разбора.

Классификация методов с/р

1. Методы разбора: нисходящий., восходящий, комбинированный (сочетает особенности 2-ух предыдущих).

2. Последовательность разбора: слева направо, справа налево, произвольный.

3. Просмотр вперед: на 1 символ, ... , на n символов.

4. Использование возвратов: есть, нет.

  1. Нисходящий и восходящий подходы широко используются в различных областях деятельности (искусственный системный анализ и синтез, метод разбора программного обеспечения сверху вниз и снизу вверх). Нисходящий разбор заключается в построении дерева разбора, начиная с корневой вершины. Разбор заключается в заполнении промежутков между начальными нетерминалами и символами входной цепочки правилами. Подстановка основывается на том факторе, что корневая вершина явл. узлом , состоящим из листьев, явл. цепочкой терминалов и нетерминалов одного из альтернативных правил, порождающих входным нетерминалом. Подставляемое правило выбирается произвольно. Вместо новых нетерминальных вершин осуществляется новая подстановка и т.д. Процесс протекает до тех пор пока не будут установлены все связи нитей, соединяющих корневую вершину и символы входной цепочки, или пока не будут рассмотрены все возможные комбинации правил. В последнем случае входная цепочка отвергается. Построенное дерево разбора подтверждает принадлежность данной цепочки входному языку. Для одной и той же цепочки могут быть построены различные деревья разбора. При восходящем разборе дерево строится от терминальных листов, применимых по входной цепочке. В результате будет дерево, корнем кот. явл. начальный нетерминал. Комбинированный разбор может быть реализован тогда, когда процесс распознавания разбивается на 2 этапа. Их может быть больше 2 –ух и порядок произвольный. Комбинированным можно считать разбор в любом трансляторе, если л/а – 1-ый этап, а с/а – 2-ой. При этом мы не можем считать л/а как истинный распознаватель. Прямой л/а будет явл. восходящим распознавателем, если он будет сочетаться с нисходящим разбором. Непрямой л/а – нисходящий разбор. В с/а – комбинация различных видов разбора не используется, т.к. в этом нет смысла.

  2. Слева направо- когда порождение новой цепочки осуществляется до самого левого нетерминала. На каждом шаге, как только из самого левого нетерминала порождается цепочка осуществляется переход к след. Последовательность разбора сочетается с методом разбора. При нисходящем разборе слева направо входная цепочка распознается с ее начала. При нисходящем разборе справа налево – ведет к первоначальному символу. Восходящий разбор слева направо – осуществляет замену на нетерминальные символы, кот. расположены в конце цепочки. Замена начальных символов происходит при восходящем разборе справа налево.

  3. Языки бывают различными по сложности и ряд языков нельзя описать с помощь простых грамматик, поэтому в грамматиках могут встречаться альтернативные правила, начинающиеся с одинаковых цепочек символов. Возникающая неоднозначность может быть разрешена путем предварительного просмотра правила на n символов вперед до той границы, начиная с кот. данное правило будет отличаться от других. В контекстно-свободных грамматиках число, определяющее количество символов, анализирующееся перед выбором подстановки, используется для классификации. По этому критерию контекстно-свободные грамматики задаются след. образом: КС(1), КС(2) – количество символов, анализируемых при подстановке. Просмотр вперед – один из возможных вариантов упорядочивания подстановок, обеспечивающий решение проблемы недетерминированности.

  4. С/р с возвратом выполняется аналогично тому как осуществляется непрямой л/а. Возвраты производятся для альтернативных правил, начинающихся с одинаковых подцепочек. В этом случае появление отказа при разборе правил ведет к восстановлению входной головки в то положение, в кот. она была до разбора данного правила. Использование возвратов может выступать в качестве альтернативы просмотра вперед. Приоритет правил назначается также как и при л/а и зависит от того явл. ли некоторое правило подмножеством другого. Этот метод считается универсальным, легким. Недостаток: замедление, увеличение времени разбора., увеличение времени построения объектной модели.

Т.о. приведенные варианты с/р могут встречаться в разнообразных сочетаниях. Однако, при разработке языка программирования необходимо искать разумный компромисс Чем сложнее синтаксис языка программирования, тем сложнее его грамматика. Чем сложнее грамматика, тем больше сложность и универсальность методов разбора. Универсальность ведет к более медленному выполнению процессов разбора. Поэтому от начала процесса разбора до его выполнения постоянно необходимо обеспечивать баланс между сложностью замысла и простотой реализации.

Билет №61

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