CS 421: Programming Languages and Compilers
Midterm - Feb. 27, 7PM, 1404 Siebel
Sample questions for final (solutions)

Solutions to mid-term exam questions

Topical outline

Ocaml (sample questions) (solutions)
      Types; polymorphism
     Lists and recursion
     Type definitions; pattern-matching; trees
     List and trees in Java
Language implementation (sample questions) (solutions)
     Compilation vs. interpretation
     Structure of compilers
     Abstract syntax
     Run-time systems
     Stack structure
Lexical analysis (sample questions) (solutions)
     Finite-state machines
          Constructing FSM's for specific token types
     Regular expressions
     ocamllex
Parsing (sample questions) (solutions)
     Context-free grammars
          Syntax trees; sentences; sentential forms
          Ambiguity
     Top-down parsing
          Recursive descent
          LL(1) conditions
          FIRST and FOLLOW sets
          Left-factoring grammars
     Bottom-up parsing
          Shift-reduce parsing
          Parser conflicts
          ocamlyacc
               Syntax of ocamlyacc
               Associativity declarations
Code generation (sample questions) (solutions)
     Intermediate representations
     Translation to IR form
     Short-curcuit evaluation of boolean expressions