%left and %right in yacc

后端 未结 2 1136
攒了一身酷
攒了一身酷 2021-02-08 02:04
{%
#include
#include
%}

%token ID NUM IF THEN LE GE EQ NE OR AND ELSE

%right \'=\'
%left AND OR
%left \'<\' \'>\' LE GE EQ NE
%lef         


        
2条回答
  •  深忆病人
    2021-02-08 02:44

    I know this is an old question but in case some one else is looking for this information :

    %left, %right and %nonassoc, defines how yacc will solve repetition of operators. In case you have:

    1 + 2 + 3
    

    both operators have the same precedence level ( they are the same :) ), in this case yacc can solve:

    // using %left
    (1 + 2) + 3
    

    or:

    // using %right
    1 + (2 + 3)
    

    and finally:

    //using %nonassoc
    1 + 2 + 3 is considered illegal and a syntax error!
    

    you can read more in here.

提交回复
热议问题