This repository contains some example code and test cases for the Introduction to Compilers and Language Design online textbook.
-
chapter3/flex contains a complete example of the flex program from chapter 3.
-
chapter4/hand-written contains a complete hand-written scanner and parser using the recursive descent technique for LL(1) grammars shown in chapter 4.
-
chapter5 contains several variations on the running calculator example, showing an incorrect example with multiple shift-reduce conflicts, a working validator, inline evaluator, and interpreter.
-
starter-code contains the starter code for the B-Minor project. This incorporates the header files defined in the text book, and gives a simple structure that will help to avoid some common software engineering pitfalls.
-
tests contains some sample test cases that demonstrate how to automate testing for each stage of the project. Note that the test cases are not necessarily comprehensive: both students and instructors are advised to carefully study the language, write new test cases, and discuss any areas of ambiguity.