here's a LR parser in groovy