2016-03-10 2 views
0

enter image description hereзеркальные (1) спутанность

S → (S) S 
| . 

на основе определения, 0, 2 и 4 имеют сдвиг/уменьшить конфликт. Следующее множество S является «)». Для SLR (1) в состоянии 2 "(" не находится в следующем наборе S, но почему это SLR (1)? Можете ли вы также объяснить правило конфликта сдвига/уменьшения для slr (1), I можно спутать на что-то

+0

Ваш вопрос может быть сформулирован лучше. Существует конфликт смены/сокращения без взгляда, но один символ lookahead разрешает его: вы меняете '(' и иначе уменьшаете. Что вы не понимаете? – rici

+0

определение в мои заметки для SLR (1): «если вы хотите уменьшить (x-> b), тогда следующий вход должен соответствовать (x). И я не знаю, как его применять. follow (s) is ")", а следующий вход - "(" .. – user3230613

+0

, если следующий ввод равен '(', вы не можете уменьшить. Но в этом случае вы можете сдвинуть '(', так это то, что вы делаете , – rici

ответ

0

Давайте начнем с грамматики:.

S → (S) S | & эпсилон;

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

Start → S

S → (S) S | & Эпсилон;

Обратите внимание, что FOLLOW (S) содержит ) и $ и никаких других символов.

Теперь мы можем приступить к созданию SLR (1) автомат, построив LR (0) автомат и приумножения каждую продукцию с FOLLOW набор:

(0) 
Start -> .S  [$] 
    S -> .(S)S [$)] 
    S -> .  [$)] 

(1) 
Start -> S.  [$] 

(2) 
    S -> (.S)S [$)] 
    S -> .(S)S [$)] 
    S -> .  [$)] 

(3) 
    S -> (S.)S [$)] 

(4) 
    S -> (S).S [$)] 
    S -> .(S)S [$)] 
    S -> .  [$)] 

(5) 
    S -> (S)S. [$)] 

Вы утверждали, что состояния 0, 2, 4 имеют конфликты сдвига/сокращения, но я на самом деле не думаю, что это так. В состоянии (0) у нас есть завершенный элемент S →., Но смотри - $ и). Это означает, что мы уменьшаем только на $ и). С другой стороны, единственное действие сдвига здесь происходит на (

Если бы у нас не было взглядов, у нас был бы конфликт сдвига/уменьшения, но из-за взглядов, которые мы знаем, чтобы сдвинуться, если мы см. (и уменьшить, если мы увидим) или $. Если вы проверите другие состояния, которые вы отметили, вы увидите, что применяется та же самая логика.

В результате эта грамматика действительно является зеркальной (1) .

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

  • Нет связанных вопросов^_^