2014-05-27 5 views
0
  1. Вместо того, чтобы говорить «Самый правый вывод в обратном порядке», почему бы им не сказать «крайнее сокращение»? Они имеют в виду одно и то же? Мне очень сложно читать.Вопросы о анализаторах LR

  2. Что такое набор замыканий и как он играет роль в процессе синтаксического анализа? Каждый набор лекций, которые я нашел в Интернете, предполагает, что я уже знаю, что это такое и что он делает.

+0

Вопросы бесплатны; если у вас есть два вопроса, задайте два вопроса. Не заполняйте два вопроса в одном. Таким образом, неясно, оба ответа уже получены. – MSalters

+0

«Самый правый вывод в обратном порядке» не означает, что вы меняете порядок строк или сканирование. Вывод происходит от символа начала до предложения; синтаксический разбор начинается с предложения и заканчивается символом начала. Таким образом, для разбора следует отменить вывод (или сделать это назад, если хотите), но каждый шаг трансформации по-прежнему включает в себя самый правый, не имеющий терминалов. Как предлагает @MSalters, разделите свои вопросы, и я отвечу на этот конкретный вопрос. – rici

ответ

0

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

«Закрывающий набор» представляет собой набор элементов парциального разбора, которые строятся путем закрытия из одного или нескольких начальных элементов парциального разбора. Каждый уникальный набор замыканий отображает одно состояние. Правило для закрытия множества строительства: Если множество содержит элемент вида «X → α _ β» и грамматики содержит правило вида «А → δ», добавьте товар «A → _ δ» в набор предметов. Для любого заданного набора элементов вам нужно вычислить замыкание, многократно добавляя элементы, пока не будет добавлено больше. Кроме того, это игнорирует просмотр (относится к конструкции LR (k), но не для конструкции LALR (1) или SLR (1)).

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

Смежные вопросы