use red-black tree in BNF parser