Hi Fresh,
eventhough it's been some time since fooling around with Lex & Yacc (aka bison) I'll give this a shot. For reference reasons I've added line numbers to your grammar:
1 Q_ID : Q_ID '.' Id |Id;
2 classdecl : modifier CLASS Id IS END
3 |modifier CLASS Id INHERITS Q_ID IS END
4 |modifier CLASS Id IMPLEMENTS Q_ID_LIST IS END
5 |modifier CLASS Id INHERITS Q_ID IMPLEMENTS Q_ID IS END <<<<
6 |modifier CLASS Id IS feature_closer END
7 |modifier CLASS Id INHERITS Q_ID IS feature_closer END
8 |modifier CLASS Id IMPLEMENTS Q_ID_LIST IS feature_closer END
9 |modifier CLASS Id INHERITS Q_ID IMPLEMENTS Q_ID_LIST IS feature_closer END
10
11 | CLASS Id IS END
12 | CLASS Id INHERITS Q_ID IS END
13 | CLASS Id IMPLEMENTS Q_ID_LIST IS END
14 | CLASS Id INHERITS Q_ID IMPLEMENTS Q_ID IS END <<<<
15 | CLASS Id IS feature_closer END
16 | CLASS Id INHERITS Q_ID IS feature_closer END
17 | CLASS Id IMPLEMENTS Q_ID_LIST IS feature_closer END
18 | CLASS Id INHERITS Q_ID IMPLEMENTS Q_ID_LIST IS feature_closer END;
The shift/reduce conflicts are probably based on the rules in lines 3 and 5 as well as lines 12 and 14. Most probable cause for that lies in the rule IMPLEMENTS which isn't listed. BTW is Id a terminal symbol or a rule?
If you're sure you're doing things right you can instruct bison to resolve this issue by forcing either resolve or shift to occur.
The best way to go for sure is to make your grammar conflict free, if it's possible to do so.
This one was a real time saver for me way back when:
O'Reilly, Lex & Yacc
Cheers
Manfred