	TOPICS FOR CS536 MIDTERM EXAM (tentative)
	=========================================

1. Scanning
   ========
   General: what does a scanner do; how does it fit into the design of a
            compiler?

   Underlying Model: Finite-State Machines

   Specification of a scanner:
	   Regular Expressions
	   JLex Specifications


2. Context-Free Grammars
   =====================

   Specification of a language's syntax via a Context-Free Grammar
       derivations (leftmost, rightmost)
       parse trees
       expression grammars (precedence, associativity)
       list grammars
       ambiguous grammars
       recursive grammar (left recursive, right recursive)

3. Syntax-Directed Translation
   ===========================

   "plain" translations
       writing rules of the form S1.trans = ...
   Java Cup translations
       using ":xx" to name the translation associated with a symbol
       defining translations by assigning to RESULT
     

4. Parsing
   =======
   General: what does a parser do; how does it fit into the design of a
            compiler?

   Top-Down Parsing
       predictive parsing (using a stack and a selector table)
       LL(1) grammar
	    left factoring
	    removing left recursion
	    First and Follow sets (how to compute and why they are important)
	    building the selector table 



