- Understand the difference between declare and define.
- Understand command line argument processing with getopt.
- Understand the use old "C style" strings which are done with char *. No, really. This includes things like strlen, strdup, and printf formatting.
- Also understanding std::strings might be of help.
- A very basic template library stuff might be useful.
- Understanding state machines.
- Understand pointers, pointers, pointers, pointers, and more pointers ...
- Understand memory allocation with "new" and "delete".
- Being skilled at recursion esp. with respect to tree construction and traversal.
- Very important to understand construction of n-ary trees in C/C++ using pointers. Know how to traverse the tree. Again... understand recursion, understand pointers.
- Understanding of objects might not be needed but this is a large program and some parts lend themselves to thoughts of objects (although the sample compiler will not use them).
- You must understand debugging of seg faults! Get used to gdb or other debugger that can track down pointer corruption.
- You need to understand how to build programs from multiple files using make. In particular you must understand how a makefile works and how to create a makefile.
- The proper use of header files and code files. Do not put executable code in header files! Know why you don't do that.
- Understand the meaning of extern and static.
Writing a working compiler for CS445 is a wonderful feeling. But to be successful
you need to already have mastered a variety of skills in C/C++. Here is a short list
of the necessary skills for being successful at building a compiler in CS445.