A top down parser that can handle left recursion by using a stack and backtracking