An LR parser generator