parsing LL(1)