저는 YACC (실제로 Bison)에 문법을 쓰고 있습니다. 나는 shift/reduce 문제가 있습니다. 접미사 증가 및 감소 연산자가 포함 된 결과입니다. 다음은 문법의 아래 손질 버전 :후행 증가 연산자에서 YACC 시프트/감소 충돌을 수정하는 방법은 무엇입니까?
%token NUMBER ID INC DEC
%left '+' '-'
%left '*' '/'
%right PREINC
%left POSTINC
%%
expr: NUMBER
| ID
| expr '+' expr
| expr '-' expr
| expr '*' expr
| expr '/' expr
| INC expr %prec PREINC
| DEC expr %prec PREINC
| expr INC %prec POSTINC
| expr DEC %prec POSTINC
| '(' expr ')'
;
%%
들소가 나에게 말한다 (12) 교대/갈등을 줄일 수 있습니다,하지만 난 후위 증가 및 감소를 위해 줄을 주석하는 경우, 그것을 잘 작동합니다. 누구든지이 갈등을 해결하는 방법을 알고 있습니까? 이 시점에서 LL (k) 파서 생성기로 이동하는 편이 훨씬 쉽습니다. LALR 문법은 항상 자연스럽게 작성하는 것처럼 보입니다. 또한 GLR을 고려 중이지만 좋은 C/C++ GLR 파서 생성기에 대해서는 잘 모릅니다.
유권자가 적어도 이유를 제시한다면 나는 감사 할 것입니다 ... – Zifre