Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В информатике , синтаксический анализ показывает грамматическую структуру линейного текста ввода, как первый шаг в разработке ее смысл. При восходящем синтаксическом анализе сначала распознаются мелкие детали самого нижнего уровня текста, а затем структуры среднего уровня, а общая структура самого верхнего уровня остается. [1]

Снизу вверх или сверху вниз [ править ]

Название "снизу вверх" происходит от концепции дерева синтаксического анализа , в котором наиболее подробные части находятся в нижней части перевернутого дерева, а составленные из них более крупные структуры находятся на последовательно более высоких уровнях, пока не окажутся наверху или "корень". "дерева" одна единица описывает весь входной поток. Восходящий синтаксический анализ обнаруживает и обрабатывает это дерево, начиная с нижнего левого края, и постепенно продвигается вверх и вправо. [2] Синтаксический анализатор может воздействовать на нижний, средний и верхний уровни иерархии структуры, никогда не создавая фактического дерева данных; тогда дерево просто неявно присутствует в действиях парсера. Восходящий синтаксический анализ терпеливо ожидает, пока он не просканирует и не проанализирует все части некоторой конструкции, прежде чем зафиксировать то, что представляет собой комбинированная конструкция.

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

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

Анализ снизу вверх иногда выполняется с возвратом . Но гораздо чаще восходящий синтаксический анализ выполняется синтаксическим анализатором сдвига-сокращения, таким как синтаксический анализатор LALR .

Примеры [ править ]

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

Ссылки [ править ]

  1. ^ Арвинд Кумар Бансал (14 декабря 2013). Введение в языки программирования . CRC Press. ISBN 978-1-4665-6514-2.
  2. ^ Компиляторы: принципы, методы и инструменты (2-е издание), Альфред Ахо, Моника Лам, Рави Сетхи и Джеффри Уллман, Prentice Hall 2006.
  3. Дик Грюн; Кериэль Дж. Х. Джейкобс (29 октября 2007 г.). Методы синтаксического анализа: Практическое руководство . Springer Science & Business Media. ISBN 978-0-387-68954-8.