bison で文法を構築していて、ar/r の競合があります (どこにあるかはわかっています) が、修正方法がわかりません。可能な限り助けていただければ幸いです。
競合を含む私のコードの部分は次のとおりです。
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)
私は本当にすべてを試しましたが、競合を取り除くことはできません...アイデアや提案は大歓迎です!
どうもありがとう!!