Простой ответ заключается в том, что вы правы: с этой конкретной грамматикой нет никакой разницы, потому что ни один двоичный (или постфиксный) оператор не имеет приоритета PREC_UNARY
, а тест, который будет использоваться, - & le;.
Тем не менее, общепринятым ответом является использование PREC_UNARY
, потому что унарные префиксные операторы (обязательно) являются ассоциативными справа. Это соглашение происходит от случая бинарных операторов, где вам нужно использовать приоритет оператора плюс один для левоассоциативных операторов (нормальный случай) и сам приоритет оператора для правоассоциативных операторов (возведение в степень и присвоение, например). (Назначение на самом деле несколько сложнее, но я лично считаю, что решение, предложенное Бобом Нистромом, сложнее, чем было бы необходимо.)
Другой обычный ответ проистекает из возможности использования анализатора приоритета оператора снизу вверх («шунтирующий двор» Дейкстры) вместо синтаксического анализатора Пратта сверху вниз. Полное изучение анализа снизу вверх выходит далеко за рамки этого вопроса; достаточно сказать, что тот же принцип применим и к ассоциативности.