나는 들소에 문법을 작성하고 있는데 r/r 충돌이 있습니다 (나는 그것이 어디 있는지 압니다). 그러나 그것을 고치는 방법을 모르겠습니다. 가능한 도움을 주시면 감사하겠습니다.Bison은 문법의 충돌을 줄이거 나 줄일 것입니다.
충돌을 포함 내 코드의 일부는 다음과 같습니다
orismos2: %empty
|orismos orismos2
|error {yyerrok;yyclearin;};
orismos: orismosmetablitwn
|orismossunartisis
|prwtotuposunartisis;
orismosmetablitwn: tuposdedomenwn listametablitwn SEMICOLON ;
tuposdedomenwn: INT
|BOOL
|STRING;
listametablitwn: ID nid ;
nid: %empty
|pid nid
|error {yyerrok;yyclearin;};
pid: COMMA ID ;
orismossunartisis: kefalidasunartisis tmimaorismwn tmimaentolwn;
prwtotuposunartisis: kefalidasunartisis SEMICOLON;
kefalidasunartisis: typos_synartisis ID OPENBRACKET c CLOSEBRACKET;
typos_synartisis: INT
|BOOL
|VOID;
는 내가 모든 충돌을 볼 수있는 출력 파일을 만들 수 있습니다. 충돌을 포함하는 파일의
부분은 다음과 같습니다 정말 모든 노력을했지만, 나는 충돌을 제거 할 수 없습니다
State 21 conflicts: 1 reduce/reduce
State 22 conflicts: 1 reduce/reduce
Grammar
10 orismos2: %empty
11 | orismos orismos2
12 | error
13 orismos: orismosmetablitwn
14 | orismossunartisis
15 | prwtotuposunartisis
16 orismosmetablitwn: tuposdedomenwn listametablitwn SEMICOLON
17 tuposdedomenwn: INT
18 | BOOL
19 | STRING
20 listametablitwn: ID nid
21 nid: %empty
22 | pid nid
23 | error
24 pid: COMMA ID
25 orismossunartisis: kefalidasunartisis tmimaorismwn tmimaentolwn
26 prwtotuposunartisis: kefalidasunartisis SEMICOLON
27 kefalidasunartisis: typos_synartisis ID OPENBRACKET c CLOSEBRACKET
28 typos_synartisis: INT
29 | BOOL
30 | VOID
State 21
17 tuposdedomenwn: INT .
28 typos_synartisis: INT .
ID reduce using rule 17 (tuposdedomenwn)
ID [reduce using rule 28 (typos_synartisis)]
$default reduce using rule 17 (tuposdedomenwn)
State 22
18 tuposdedomenwn: BOOL .
29 typos_synartisis: BOOL .
ID reduce using rule 18 (tuposdedomenwn)
ID [reduce using rule 29 (typos_synartisis)]
$default reduce using rule 18 (tuposdedomenwn)
... 어떤 아이디어 나 제안을 환영합니다!
감사합니다.
는 "정말 모든 노력을했다"당신은 예를 들어, 시도 무엇입니까? :) * 모든 것을 시도하는 것은 * 꽤 시간이 걸릴 것입니다,하지만 문법의 클래스가 반복적으로 열거 주어진 결국 당신이 옳은 일을 찾을 것이라고 보장된다. – rici