java - 与前缀和后缀相同的运算符优先级问题(语法,Java Cup)

标签 java grammar operator-keyword prefix operator-precedence

我正在使用 Java、JFlex,它将数据传递到 Java Cup。

如何定义运算符的优先级,该运算符可以是后缀和前缀,但优先级不同。

我的意思是:

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

我不知道如何让这样的事情发挥作用。无论我做什么,我最终都会转移/减少冲突。

感谢您的时间和帮助。

更新:

这是一个学校项目,我得到了运算符优先级列表,因此我必须坚持下去。

这是给定的运算符优先级列表的一部分(从最小优先级到最大优先级):

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

我不知道如何确保这种优先级。

最佳答案

我不知道为什么,但事实证明这是要走的路。

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

关于java - 与前缀和后缀相同的运算符优先级问题(语法,Java Cup),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878170/

相关文章:

java - 预测乘法的位数

java - 如何在java中分割具有重复字符的字符串

java - OkHttp 是否在重定向时发送授权和其他可能敏感的 header ?

java - Android AlertDialog 设置项目对齐中心

来自 bison 的 ANTLR 语法

algorithm - "one or more"带 LL 解析器

parsing - ["03C0"] 如何匹配附件 P 中 <Ada 引用手册> 的语法?

operator-keyword - 负模运算符结果的目的是什么?

c++ - 如何在模板类中使用友元运算符?

swift - 是否可以在 Swift 中缩写此条件?