[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
5.3.2 Specifying Operator Precedence
Bison allows you to specify these choices with the operator precedence
declarations %left
and %right
. Each such declaration
contains a list of tokens, which are operators whose precedence and
associativity is being declared. The %left
declaration makes all
those operators left-associative and the %right
declaration makes
them right-associative. A third alternative is %nonassoc
, which
declares that it is a syntax error to find the same operator twice “in a
row”.
The last alternative, %precedence
, allows to define only
precedence and no associativity at all. As a result, any
associativity-related conflict that remains will be reported as an
compile-time error. The directive %nonassoc
creates run-time
error: using the operator in a associative way is a syntax error. The
directive %precedence
creates compile-time errors: an operator
can be involved in an associativity-related conflict, contrary to
what expected the grammar author.
The relative precedence of different operators is controlled by the order in which they are declared. The first precedence/associativity declaration in the file declares the operators whose precedence is lowest, the next such declaration declares the operators whose precedence is a little higher, and so on.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on December 1, 2013 using texi2html 5.0.