Final Topics
The final is cumulative. Study the notes, the source code
examples on the 330 webpage, and the textbook. Here are some topics to help
guide your studying.
- Compilation vs. interpretation
- 4 concepts needed to express a context-free grammar
- How to write a grammar for a very simple language
- How to describe the language generated by a very
simple grammar
- Productions, non-terminals, terminals
- Context-free grammars and regular expressions
- Parse trees
- Leftmost and rightmost derivations
- Bindings: what it is, and what is bound when
- Scope: what it means
- Static scope: what it is, and what languages have it
- Dynamic scope: what it is, and what languages have it
- Scope rules in C
- Scope rules in Java (hint: read handout!)
- Scope rules in Scheme
- Scope rules in Python
- Scope rules in Perl
- Declaration order
- Shallow vs. deep binding of subroutines
- Programming language support for Parnas' information-hiding modules
- Types, Type equivalence, type compatibility, and type inference
- Iterators, coroutines, call/cc
- Advanced Scheme topics: Tail recursion, tail call optimization, currying,
continuation passing style, and lazy evaluation
- Section 10.1 of the textbook
- Lambda calculus
- Prolog facts, rules, queries, and operators
- Prolog lists, recursive rules, the cut, backtracking, database-changing
predicates
- Language support for concurrency
- Language support for extended regular expressions