Рубрики

ВОРОТА | GATE CS 2013 | Вопрос 65

Рассмотрим следующие два набора элементов LR (1) грамматики LR (1).

X -> c.X, c/d
   X -> .cX, c/d
   X -> .d, c/d
   X -> c.X, $
   X -> .cX, $
   X -> .d, $

Какое из следующих утверждений, связанных со слиянием двух наборов в соответствующем парсере LALR, является / является ЛОЖНЫМ?

  1. Не может быть объединено, так как взгляды на будущее разные.
  2. Может быть объединено, но приведет к конфликту SR.
  3. Может быть объединено, но приведет к конфликту RR.
  4. Не может быть объединено, так как goto на c приведет к двум различным наборам.

(A) 1 только
(B) только 2
(C) 1 и 4 только
(D) 1, 2, 3 и 4

Ответ: (Д)
Объяснение: Даны два набора элементов LR (1):


X -> c.X, c/d
X -> .cX, c/d
X -> .d, c/d
and
X -> c.X, $
X -> .cX, $
X -> .d, $ 

Символы / терминалы после запятой являются символами упреждения.

Это наборы LR (1) (LR (1) также называется CLR (1)).

Парсер LALR (1) объединяет набор элементов LR (1), которые идентичны по своему 1-му компоненту, но различаются по их 2-му компоненту.

В производственном правиле набора элементов LR (1), (A -> B, c), A-> B является 1-м компонентом, а набор символов Look-Ahead, который здесь представлен c, является вторым компонентом ,

Теперь мы можем видеть, что в данных наборах 1-й компонент соответствующего производственного правила идентичен в обоих наборах, и они различаются только во 2-м компоненте (то есть их прогнозных символах), поэтому мы можем объединить эти наборы, чтобы создать один набор, который было бы :


X -> c.X, c/d/$
X -> .cX, c/d/$
X -> .d, c/d/$

Это сделано для уменьшения общего количества состояний анализатора.

Теперь мы можем проверить данные заявления.

Утверждение 1: Утверждение ложно, так как объединение было сделано, потому что 2-ые компоненты, т. Е. Прогнозирование, были разными.

Утверждение 2: В объединенном наборе мы не можем видеть никакого конфликта Shift-Reduce (потому что никакого сокращения даже невозможно, сокращение будет возможно, когда присутствует производство формы P -> q.)

Утверждение 3: В объединенном наборе мы не видим никакого конфликта уменьшения-уменьшения (по той же причине, что и выше, никакого уменьшения даже невозможно, поэтому нет шансов конфликта RR)

Утверждение 4: Это утверждение также неверно, потому что goto передается на нетерминальных символах, а не на терминальных символах, а c является терминальным символом.

Таким образом, все утверждения неверны, поэтому вариант D.
Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE CS 2013 | Вопрос 65

0.00 (0%) 0 votes