TOPICS FOR CS321 FINAL EXAM The final exam will focus primarily on topics covered after the midterm, but some questions may draw on material from the entire course. 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 and structural subtyping rules Polymorphism: Parametric vs. Ad-hoc Subtype polymorphism Generic types Abstract data types; modules