2011-04-11 111 views
1

優先級:轉變/減少衝突

%nonassoc low
%nonassoc less_than_or_equal less_than equal_operator
%left op_plus op_minus
%left op_multiply op_devision

規則:

expr : expr op_plus expr
| expr op_minus expr
|expr op_multiply expr
|expr op_devision expr
|'~' expr |open_paran expr close_paran |int_val |float_val ;

bool_expr : expr less_than_or_equal expr
| expr less_than expr
|expr equal_operator expr
|NOT bool_expr
|TRUE
|FALSE ;

expression : expr %prec low
|bool_expr;

我得到轉變/減少同expr之後如何解決?

回答

1

添加優先規則「〜」來解決該問題(例如,如果「〜」用於否定我會從右邊關聯):

%right '~' 
+0

其實,左/右/ nonassoc與一元操作無關 - 所有重要的是優先級(它出現在優先級列表中)。您可能希望它最後(最高優先級) – 2011-04-11 22:36:20

+0

此頁面可能有幫助:[鏈接](http://uw714doc.sco.com/en/SDK_tools/_Precedence.html) – Bubbles 2011-04-11 23:22:55