A utility that: Ensures program is syntactically correct If the program is syntactically correct, it parses through source code input to return a structured representation of the input (Most commonly in the form of an AST) Generation Types Top-Down Generation Bottom-Up Generation Parsing Types Recursive Descent Parsing Operator-Precedence Parsing Parsing Algorithms Basic Expression Parsing Binary Expression Parsing Pratt Parser Further Reading https://cs.brown.edu/courses/cs173/2012/book/Everything__We_Will_Say__About_Parsing.html https://www.youtube.com/watch?v=OIKL6wFjFOo