LR-анализатор

LR-анализатор
LR Parser

LR-анализатор (англ. LR parser) — синтаксический анализатор для исходных кодов программ, написанных на некотором языке программирования, который читает входной поток слева (Left) направо и производит наиболее правую (Right) продукцию контекстно-свободной грамматики. Используется также термин LR(k)-анализатор, где k выражает количество непрочитанных символов предпросмотра во входном потоке, на основании которых принимаются решения при анализе. Обычно k равно 1 и часто опускается.

Синтаксис многих языков программирования может быть определён грамматикой, которая является LR(1) или близкой к этому, и по этой причине LR-анализаторы часто используются компиляторами для выполнения синтаксического анализа исходных кодов.

Обычно на анализатор ссылаются в связи с именем того языка, исходный код которого он разбирает, например, «C++ анализатор» разбирает исходные коды языка C++.

LR-анализатор может быть создан из контекстно-свободной грамматики программой, называемой генератор синтаксических анализаторов, или же написан вручную программистом. Контекстно-свободная грамматика классифицируется как LR(k), если существует LR(k)-анализатор для неё, как определено генератором анализаторов.

Говорится, что LR-анализатор выполняет разбор снизу вверх, потому что он пытается вывести продукцию верхнего уровня грамматики, строя её из листов.

Детерминированный контекстно-свободный язык — это язык, для которого существует какая-либо LR(k) грамматика. Каждая LR(k) грамматика может быть автоматически преобразована в грамматику LR(1) для того же языка, в то время как LR(0) грамматки для некоторых языков может не существовать. LR(0)-языки являются собственным подмножеством детерминированных.

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

LR-анализ может быть обобщён как произвольный анализ контекстно-свободного языка без потери производительности, даже для LR(k) грамматик. Это происходит благодаря тому, что большинство языков программирования могут быть выражены LR(k) грамматикой, где k — малая константа (обычно 1). Заметьте, что разбор не-LR(k) грамматик на порядок медленнее (кубический вместо квадратичного в отношении размера входного потока).

LR-анализ может применяться к большему количеству языков, чем LL-анализ, а также лучше в части сообщения об ошибках, то есть он определяет синтаксические ошибки там, где вход не соответствует грамматике, как можно раньше. В отличие от этого, LL(k) (или, что хуже, даже LL(*)) анализаторы могут задерживать определение ошибки до другой ветки грамматики из-за отката, часто затрудняя определение места ошибки в местах общих длинных префиксов.

LR-анализаторы сложно создавать вручную и обычно они создаются генератором синтаксических анализаторов или компилятором компиляторов. В зависимости от того, как была создана таблица анализа, эти анализаторы могут быть названы простыми LR-анализаторами (SLR), LR-анализаторами с предпросмотром (LALR) или каноническими LR-анализаторами. LALR-анализатор имеют большую распознавательную способность, чем SLR-анализаторы, однако требуют больше памяти для хранение большей таблицы анализа; а канонические LR-анализаторы — большую распознавательную способность, чем LALR-анализаторы, однако также требуют большей памяти.

См. также



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "LR-анализатор" в других словарях:

  • анализатор — нервный аппарат, осуществляющий функцию анализа и синтеза раздражителей, исходящих из внешней и внутренней среды организма. Понятие А. введено И. П. Павловым. А. состоит из трех частей: 1) периферический отдел рецепторы, преобразующие… …   Большая психологическая энциклопедия

  • Анализатор — (др. греч. ἀνάλυσις  analysis  разложение, расчленение) Анализатор в биологии  то же, что сенсорная система. Анализатор спектра  прибор для наблюдения и измерения относительного распределения энергии электрических… …   Википедия

  • Анализатор золота — Анализатор золота …   Википедия

  • АНАЛИЗАТОР — АНАЛИЗАТОР, прибор, дающий возможность находить плоскость поляризации света. А. может служить всякая оптическая система, поляризующая свет. Свет, пропускаемый А., достигает максимума яркости, когда плоскость поляризации прибора параллельна… …   Большая медицинская энциклопедия

  • АНАЛИЗАТОР — верхнее зеркало поляризационного прибора. Словарь иностранных слов, вошедших в состав русского языка. Чудинов А.Н., 1910. анализатор (гр.; см. анализ) 1) в оптике прибор (поляризационная призма, поляроид и др.) для обнаружения и исследования… …   Словарь иностранных слов русского языка

  • анализатор времени выполнения — анализатор временных диаграмм — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы анализатор временных диаграмм EN timing analyzer …   Справочник технического переводчика

  • анализатор кода коммутационной станции — анализатор кода станции Блок регистра коммутационной станции (узла) сети связи, предназначенный для определения направления связи, типа коммутационной станции, к которой должно быть установлено соединение, и способа выдачи адресной информации в… …   Справочник технического переводчика

  • анализатор масс-спектрометра — анализатор Часть масс спектрометра, предназначенная для разделения и фокусировки пучков или пакетов ионов по значениям отношения массы ионов к их зарядам [ГОСТ 15624 75] Тематики масс спектрометры Синонимы анализатор EN mass spectrometer analyzer …   Справочник технического переводчика

  • анализатор на основе ядерного магнитного резонанса — ЯМР анализатор — [А.С.Гольдберг. Англо русский энергетический словарь. 2006 г.] Тематики энергетика в целом Синонимы ЯМР анализатор EN nuclear magnetic resonance analyzer …   Справочник технического переводчика

  • анализатор процессов (SCADA) — анализатор процессов [Интент] Анализатор процессов системы Vijeo Citect является управляющим приложением ActiveX, которое позволяет оператором наблюдать данные трендов с сервера трендов, данные сигналов тревог с сервера тревог, теги переменных и… …   Справочник технического переводчика

  • анализатор топливной смеси — анализатор состава топливовоздушной смеси — [А.С.Гольдберг. Англо русский энергетический словарь. 2006 г.] Тематики энергетика в целом Синонимы анализатор состава топливовоздушной смеси EN fuel air mixture analyzer …   Справочник технического переводчика


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

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