We will cover:
        
        
          - 
            Lexing and parsing; LALR parser generators.
          
 
          - 
            Abstract syntax trees; operations on trees; compiler as
            sequence of phases operating on abstract syntax trees.
          
 
          - 
            Data flow and control flow analyses; type checking.
          
 
          - 
            Code generation; x86 assembly language.
          
 
        
        
          The homework assignments will require you to implement parts
          of a compiler (written in Java) for a non-trivial C-like
          programming language.
        
      

