2012-03-26 18 views
1

我正在使用Java,將數據傳遞給Java Cup的JFlex。與前綴和後綴相同的運算符優先級問題(語法,Java杯)

如何定義運算符的優先級,可以是後綴和前綴,但具有不同的優先級。

我的意思:

terminal END; 
terminal OP1, OP2, OP3; 

precedence OP3; 
precedence OP2; 
precedence OP1_POSTFIX; //OP1 in postfix position 
precedence OP1_PREFIX; //OP1 in prefix position 

EXPR ::= END |OP1_PREFIX EXPR | EXPR OP1_POSTFIX 

我不知道如何使這樣的工作。無論我做什麼,我最終都會遇到轉變/減少衝突。

謝謝你的時間和幫助。

UPDATE:

這是一個學校的項目,我得到了運算符優先級列表中,因此,我必須堅持下去。

這是運營商重點從最小到最大的優先級列表給出的一部分:

binary +, - (left precedence) 
not 
unary postfix^
unary prefix +, -,^

我不知道如何保證這種優先。

回答

0

我不知道爲什麼,但事實證明這是要走的路。

terminal END, EXPR, EXPR1, EXPR2; 
terminal OP1, OP2, OP3; 

precedence OP3; 
precedence OP2; 
precedence OP1_POSTFIX; //OP1 in postfix position 
precedence OP1_PREFIX; //OP1 in prefix position 

EXPR ::= END | EXPR1 | EXPR2 
EXPR1 ::= OP1_PREFIX EXPR 
EXPR2 ::= EXPR OP1_POSTFIX