https://ideas.creativecasinoties.com/post/how-a-pushdown-automaton-becomes-a-parser-part-3-x4oo3r