Working LL(1) Parser