in reply to (OT) Yapp rules and resolving reduce/reduce errors

I've run across problems like this when writing parsers. The way I would do it is to liberalize the grammer and leave the checking of the ident to a later processing stage. For instance, I would probably use something like:
ident : IDENT | INDENT_QUOTED | ident '.' IDENT | ident '.' IDENT_QUOT +ED ;
and not have the grammar distinguish between table_ident, column_ident and database_ident. The checking of the proper kind of ident can be done later. This approach also generally makes it easier to recover from errors.

Update: The reduce-reduce conflict is this: when trying to parse a column_ident and the current input token is ident with look-ahead of ., the following reductions are possible:

database_ident -> ident # i.e. column_ident -> ident '.' ident '.' i +dent table_ident -> ident # i.e. column_ident -> ident '.' ident
One solution would be to reverse the recursion:
database_ident: ident ; table_ident: ident | ident '.' database_ident ; column_ident: ident | ident '.' table_indent ;
Then when the look-ahead is '.' the grammar knows exactly what production to try to complete.