Разница между парсингом сверху вниз и снизу вверх

Оглавление:

Разница между парсингом сверху вниз и снизу вверх
Разница между парсингом сверху вниз и снизу вверх

Видео: Разница между парсингом сверху вниз и снизу вверх

Видео: Разница между парсингом сверху вниз и снизу вверх
Видео: LR парсер (теория) 2024, Ноябрь
Anonim

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

Языки высокого уровня помогают писать компьютерные программы. Их легче понять программисту, но не компьютеру. Поэтому программа высокого уровня преобразуется в машинный код. Задача компилятора состоит в том, чтобы преобразовать удобочитаемый исходный код в машиночитаемый машинный код. Программа проходит несколько шагов для преобразования в машинный код. Весь этот процесс называется системой обработки языка. Одним из них является компиляция. Анализатор синтаксиса или синтаксический анализатор находится в компиляторе и выполняет задачу синтаксического анализа.

Что такое разбор сверху вниз?

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

При синтаксическом анализе сверху вниз синтаксический анализ происходит от начального символа и достигает заданной входной строки. Рассмотрим следующие правила производства грамматики. Входная строка (w) имеет вид cad.

S -> cAd

A -> аб /а

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

Разница между анализом сверху вниз и снизу вверх
Разница между анализом сверху вниз и снизу вверх
Разница между анализом сверху вниз и снизу вверх
Разница между анализом сверху вниз и снизу вверх

Рисунок 01: Дерево синтаксического анализа 1 с разбором сверху вниз

S производит c A d, а A производит b. Строка кабд. Это не обязательная строка. Итак, необходимо сделать возврат, то есть использовать другие альтернативы.

Аналогично, S производят c A d. Применение другого варианта для A даст a. Теперь он дает требуемую строку. Поэтому синтаксический анализатор принимает эту входную строку. Дерево синтаксического анализа после выполнения синтаксического анализа сверху вниз выглядит следующим образом.

Разница между синтаксическим анализом сверху вниз и снизу вверх. Рис. 2
Разница между синтаксическим анализом сверху вниз и снизу вверх. Рис. 2
Разница между синтаксическим анализом сверху вниз и снизу вверх. Рис. 2
Разница между синтаксическим анализом сверху вниз и снизу вверх. Рис. 2

Рисунок 02: Дерево синтаксического анализа 2 с разбором сверху вниз

Когда входная строка (w) имеет вид abcde

Рассмотрите следующие правила вывода грамматики.

S -> aABe

A -> Abc/b

B -> d

При разборе сверху вниз

S -> aABe (заменяет A -> Abc)

S -> aAbcBe (Подстановка A -> b)

S -> abbcBe (заменяет B ->d)

S -> abcde

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

Что такое анализ снизу вверх?

В восходящем парсинге происходит по-другому. Разбор происходит от входной строки до начального символа. Рассмотрим следующие правила производства грамматики и пусть входная строка будет w ɛ cad

S -> cAd

A -> аб /а

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

Ключевая разница между синтаксическим анализом сверху вниз и снизу вверх_Рис. 03
Ключевая разница между синтаксическим анализом сверху вниз и снизу вверх_Рис. 03
Ключевая разница между синтаксическим анализом сверху вниз и снизу вверх_Рис. 03
Ключевая разница между синтаксическим анализом сверху вниз и снизу вверх_Рис. 03

Рисунок 03: Дерево синтаксического анализа с разбором снизу вверх

Данная строка является cad. A генерируется A. C, A и d объединяются, чтобы получить начальный символ S.

Когда входная строка (w) имеет вид abcde

Рассмотрите следующие правила вывода грамматики.

S -> aABe

A -> Abc/b

B -> d

В разборе снизу вверх

S -> aABe (заменяет B ->d)

S -> aAde (Замена A -> Abc)

S -> aAbcde (Замена A -> b)

S -> abcde

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

В чем разница между анализом сверху вниз и снизу вверх?

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

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

Разница между анализом сверху вниз и снизу вверх в табличной форме
Разница между анализом сверху вниз и снизу вверх в табличной форме
Разница между анализом сверху вниз и снизу вверх в табличной форме
Разница между анализом сверху вниз и снизу вверх в табличной форме

Резюме – парсинг сверху вниз и снизу вверх

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

Рекомендуемые: