YACC уменьшить / уменьшить конфликт - PullRequest
0 голосов
/ 25 марта 2012

У меня есть следующая грамматика:

  1. x: (z) o
  2. x: n
  3. z: x
  4. z:zx
  5. o: + | - | / | *
  6. n: [0..9]

стек синтаксического анализатора в настоящее время: "(z (zx«следующие токены» +) *

Какое из правил 3 или 4 собирается уменьшить парсер и почему?

Спасибо

1 Ответ

0 голосов
/ 28 марта 2012

Ответ: правило 4.

Интуитивно это объясняется тем, что правила 3 ​​и правила 4 представляют собой левоассоциативную пару, которая жадным образом преобразует X в Z.

Другая причина в том, что если мы уменьшим правило 3, мы получим Z Z в стеке синтаксического анализа, что не является возможной формой предложения. Грамматика не генерирует частичные деривации с Z Z.

...