first pass at grammar subset