в информационном документе бизона, упомянуто, что правило получает свой приоритет от последнего терминального символа.вставлено ниже: https://www.gnu.org/software/bison/manual/html_node/How-Precedence.html#How-Precedence
Первым результатом объявления приоритета является назначение уровней приоритета объявленным терминальным символам.Второй эффект заключается в назначении уровней приоритета определенным правилам: каждое правило получает свой приоритет от последнего терминального символа, упомянутого в компонентах.
Для приведенного ниже примера, как будет происходить синтаксический анализ, если указан выше:
nonterm1 : nonterm2
| nonterm1 term1 nonterm3 nonterm4
| nonterm1 term2 nonterm5 nonterm6
Еще один пример:
nonterm1 : nonterm2 nonterm3
| nonterm1 term1 nonterm2 nonterm3
| nonterm1 term2 nonterm2 nonterm3
Рассмотрим первый пример.Первый синтаксический анализатор будет использовать nonterm2
, затем для правила term1
, nonterm1
будет содержать nonterm2
значение и term2
более высокий приоритет, чем term1
, синтаксический анализатор должен передать значение nonterm1
в term2
правиле, но этонедопустимо, если мы предоставляем term1
приоритет правила term1
, потому что, как следует из утверждения, последний терминальный токен дает приоритет правила.Присвоить значение nonterm3 nonterm4
nonterm1
в term2
правиле невозможно или нет?
Значение для термина или нетерминального, но не частичного набора символов в правиле или это возможно?
Говорит ли инфо-документ, что последний символ терминала означает «последний, но один», который, если он является терминалом?