TOPICS FOR CS321 FINAL EXAM The final exam will focus primarily on topics covered after the midterm, but some questions may also draw on material from before the midterm. Structure of Compilers Lexical Analysis Regular Expressions and Finite Automata Scanner generators Context-free grammars BNF and Extended BNF Ambiguity in grammars Parse Trees vs. Abstract Syntax Trees Top-down parsing Recursive descent parsers LL parsing engine First and Follow set computation --------------------(midterm)---------------------- Top-down vs. Bottom-up Parsing Shift-reduce parsing LR parsing engine Parser generators Syntax-directed translation Attribute grammars Synthesized vs. Inherited Attributes Attribute evaluation during parsing Attribute evaluation using recursive descent Static vs. Dynamic Semantics Types as approximations of values Primitive vs. composite/constructed types Records, unions, arrays, functions, recursive types Static vs. Dynamic Typing Type checking Type equivalence; structural vs. name equivalence Subtyping Polymorphism: Parametric vs. Ad-hoc Subtype polymorphism Generic types Abstract data types; modules Object-oriented programming Subtyping vs. Inheritance of implementations Dynamic binding of method calls