Our work in this unit is to extend our languages to allow named variables and a second type of data, boolean true and false. This gives us an opportunity to dive into declared versus inferred types, compile-time or run-time type safety, and the importance of error messages.

From a language design standpoint, we will look at formal syntax specification via regular expressions and grammars, as a precise way to define the syntax of a language. Besides the clarity this gives us, we will also see that it allows us to use tools (sometimes) to automatically generate scanners and parsers for a language.

Implementation-wise, we will learn about the use of a basic global symbol table, and touch the surface of memory allocation.

Classes

Homeworks

Labs