Redo of top down parsing with memoization