Тот же оператор, что и у префикса префикса и префикса (Грамматика, Java Cup) - PullRequest
1 голос
/ 26 марта 2012

Я использую 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

Я не знаю, как заставить что-то подобное работать. Что бы я ни делал, я в конечном итоге сталкиваюсь со сдвигом / уменьшением конфликтов.

Спасибо за ваше время и помощь.

UPDATE:

Это для школьного проекта, и я получил список приоритетов операторов, поэтому я должен придерживаться его.

Это часть данного списка приоритетов операторов от минимального до максимального приоритета:

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

Я не знаю, как обеспечить такой приоритет.

1 Ответ

0 голосов
/ 27 июня 2012

Я не знаю почему, но оказывается, что это путь.

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
...