Change makeParser to take a thunk for recursion