Summary
This chapter was the second of two chapters covering various aspects of type checking. You learned how to represent compound types. For example, you learned how to build method signatures and use them to check method calls. All of this is accomplished via traversals of the syntax tree, and much of it involves adding minor extensions to the functions presented in the previous chapter.
This chapter also showed you how to recognize array declarations and build the appropriate type representations for them. You learned how to check whether correct types are being used for array creation and access and to build type signatures for method declarations. You also learned how to check that the correct types are being used for method calls and returns.
Congratulations on making it this far! At this point, we have completed our discussion of the front half of a programming language implementation, in which input source code is analyzed. Notations and tools helped greatly with...