When GLR parser reduces some text to the same non-terminal in two ore more ways it merges parse subtrees. Rekers uses 'symbol nodes' for this.
I this not each non-terminal could cause a merge. Knowing in advance what non-terminals never merge will greatly simplify parse tree construction.
For instance in Elkhound Technical Report the author implemented C++ grammar for GLR parser. He describes it:
The grammar currently has 37 shift/reduce conflicts, 47 reduce/reduce conflicts and 8 ambiguous nonterminal.
How can I separate ambiguous and unambiguous nonterminal for a given CFG? Where can I read about this?