SLR(1)

SLR(1)

SLR(1) — восходящий алгоритм синтаксического разбора.

Представляет собой расширение алгоритма LR(0). В ряде случаев работает тогда, когда построение LR(0) таблицы разбора для данной грамматики невозможно из-за конфликтов сдвиг-приведение или приведение-приведение. Таким образом, класс грамматик, разбираемых по SLR(1) (кр. «SLR(1)-грамматик») шире, чем класс LR(0)-грамматик.

Алгоритм собственно разбора (исполнения анализатора по входному потоку) одинаков и у SLR(1), и у LR(0) — и, шире, у LALR(1). Различаются только алгоритмы построения таблицы разбора по грамматике в процессе генерации анализатора.

Описание

Для каждого нетерминала A в грамматике генерируется множество терминалов First(A), определенное следующим образом:

  • если в грамматике есть правило с A в левой части и правой частью, начинающейся с терминала, то данный терминал входит в First(A)
  • если в грамматике есть правило с A в левой части и правой частью, начинающейся с нетерминала (обозначим B), то First(B) строго входит в First(A)
  • никакие иные терминалы не входят в First(A)

Эти же множества используется для построения анализатора LL(1).

Далее на основе множеств First(A) генерируются множества Follow(A), определенные следующим образом

  • если в грамматике есть правило, где встречается A не на последней позиции, и за ним следует терминал, то терминал входит в Follow(A).
  • если в грамматике есть правило, где встречается A не на последней позиции, и за ним следует нетерминал (обозначим B), то First(B) строго входит в Follow(A)
  • если в грамматике есть правило, где встречается A на последней позиции, то Follow(C) строго входит в Follow(A), где C — левая часть правила.
  • никакие иные терминалы не входят в Follow(A)

(возможно обобщение этих условий для случая наличия правил B -> null)

Далее производится генерация таблицы разбора, как для LR(0), с отличием при занесении действий приведения. Приведение для состояния S и входного символа C заносится в таблицу только тогда, когда в S есть цепочка, соответствующая целой правой части правила, и нетерминал N из левой части правила удовлетворяет условию «C входит в Follow(N)».

Это приводит к тому, что для SLR(1) совершается меньше попыток поставить «приведение» в клеточку таблицы разбора, что уменьшает риск возникновения конфликтов с приведениями, иногда вовсе избавляет от них и делает грамматику, не разбираемую по LR(0), разбираемой.

Практическое применение

Почти не имеет (кроме учебного) из-за узкого класса разбираемых грамматик. Практическое применение имеет LALR(1), который есть обобщение SLR(1).

Арифметические выражения с унарными и бинарными операциями и скобками разбираются по SLR(1)



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "SLR(1)" в других словарях:

  • SLR — (homonymie) Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. SLR est le sigle de l association « Sauvons la Recherche » ; SLR est l acronyme de Single Lens Reflex, en français… …   Wikipédia en Français

  • SLR —   [Abk. für Scalable Linear Recording, dt. »skalierbare Linearaufzeichnung«], älteres Aufzeichnungsverfahren für Magnetbänder, mittlerweile durch MLR abgelöst. SLR kann immer nur eine einzige Spur schreiben bzw. lesen …   Universal-Lexikon

  • SLR — [ ,es el ar ] abbreviation single lens reflex: a type of camera that allows you to see exactly what will appear in the photograph when you look through the VIEWFINDER …   Usage of the words and phrases in modern English

  • SLR — [es΄el΄är′] n. [s(ingle) l(ens) r(eflex)] a camera having a viewing system that allows the photographer to see the subject through the same lens that brings the image to the film …   English World dictionary

  • SLR — The acronym SLR can refer to:* The Ethnic SALAR SLR, from an Oghuz tribe of the Seljuk Turks, left Samarkand in present day Uzbekistan and eventually settled in their present location in Gansu province. Over the course of their history, the… …   Wikipedia

  • SLR — Классический однообъективный зеркальный фотоаппарат. Зеркальный фотоаппарат (зеркальная камера, зеркалка) фотоаппарат, использующий для выбора объекта съёмки видоискатель, в оптическую схему которого входит зеркало, перенаправляющее световой… …   Википедия

  • Slr — Die Abkürzung SLR steht für: Satellite Laser Ranging, Satellitenvermessung Scalable Linear Recording, Bandspeicherformat von Tandberg Data Single Lens Reflex, englische Bezeichnung für das Prinzip der Spiegelreflexkamera Self Loading Rifle, siehe …   Deutsch Wikipedia

  • SLR — Die Abkürzung SLR steht für: Satellite Laser Ranging, Distanzmessung mit Laserteleskopen zu Erdsatelliten Scalable Linear Recording, Bandspeicherformat von Tandberg Data Self Loading Rifle, siehe Selbstladegewehr Service Level Requirement, siehe… …   Deutsch Wikipedia

  • SLR — abbr. 1 Photog. single lens reflex. 2 self loading rifle. * * * ˌes(ˌ)elˈär abbreviation or noun ( s) single lens reflex herein * * * Photog. See single lens reflex camera. * * * abbrev 1. Single lens reflex 2. Self loading rifle * * * SLR …   Useful english dictionary

  • SLR — El acrónimo SLR puede hacer referencia a: Single lens reflex en relación a las cámaras fotográficas réflex; Satellite laser ranging en relación a las mediciones láser a satélites; Scalable Linear Recording, sistema para el almacenamiento de datos …   Wikipedia Español


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»