Permutation phrases with LR parsing
Have you considered converting this into a semantic problem?  Instead of grammar rules for all permutations of nonterminals { A, B, C }, simply have one rule to recognize (A | B | C)^3 together with special internal code that makes sure only one of each is recognized, otherwise it declares an error.  I would insert an empty production before the above clause, whose reduction triggers initialization of whatever you are using to count A's, B's, and C's, and one after, whose reduction triggers the counter check and (if necessary) asserts the error.  (of course this could get a bit tricky if the grammar is recursive through A, B, and/or C)