G22.2130-001
Compiler Construction
Prof. Mohamed Zahran
mzahran AT cs DOT nyu DOT edu
Thursdays 7:10-9:00 pm
Location: CIWW 317
Office hours: Thursdays 5:00-7:00 pm (at CIWW 328  also called room 328 WWH)


Announcements

Welcome students! ... to the compiler construction course, edition Spring 2010. If you have questions related to that course feel free to email me at mzahran@cs.nyu.edu . Here is some basic information:

The course syllabus

The final exam is scheduled to be Thursday, May 6, 2010 7:10-9:00pm WWH 317


Mailing List

Sign up for the Mailman mailing list for the course. You can do so by clicking here. Please follow the mailing list etiquette. 

I will keep an FAQ page that summarizes important questions and answers from the mailing list.


Lectures

Lecture                                               File                                       reading                 

1. Introduction                                     pdf                            1.1, 1.2 and skim 1.3 to 1.6

2. Simple Syntax-Directed Translator I   pdf                             2.1 to 2.4

3. Simple Syntx-Directed Translator II   pdf                             2.5 to 2.8 

4. Lexical Analysis I                             pdf                             3.1 to 3.5 

5. Lexical Analysis II                            pdf                             3.6->3.9 except: skim (3.7.3, 3.7.5, 3.9.1->3.95, and 3.9.8)

6. Syntax Analysis  I                             pdf                             4.1->4.5 except: skim: (4.2.6, 4.3.5, 4.4.4, and 4.4.5)    

7. Syntax Analysis II                             pdf                             4.6->4.9 except: skim (4.6.5, 4.7.5, 4.7.6, 4.8, and 4.9.2)

8. Syntax-Directed Translations             pdf                             5.1->5.5 except: skim (5.3, 5.4.3->5.4.5, 5.5.3, and 5.5.4)

9. Intermediate-Code Generation I         pdf                             6.1 -> 6.4 except: skim (6.3.1 and 6.3.2)

10. Intermediate-Code Generation II      pdf                             6.5->6.9 except: skim (6.5.3, 6.5.4, 6.5.5, 6.6.5, 6.7, 6.8, and 6.9)

11. Run-Time Environments                 pdf                              chp 7 except: skim (7.3, 7.5.2, 7.6, 7.7, and 7.8) 

12. Code Generation I                          pdf                              8.1->8.5 except: skim (8.3.3, 8.5.4, 8.5.5, 8.5.6, and 8.5.7) 

13. Code Generation II                         pdf                              8.6-> 8.9 except: skim (8.8, 8.9.3, 8.9.4, 8.9.5) 

14. REVISION


Project

Lexical analyzer : Due Feb 25

Syntax analyzer:   Due April 1st (Extended)

Semantic analyzer and intermediate code generation: Due April 22nd

Test programs


Assignments

(assignments are optional, with due date, will be returned, will help your understanding but will not hurt your grade)

#1  due Feb 11th  solutions

#2  due Mar 4th   solutions

#3  due Apr 8th   solutions


Useful Links

Compiler construction tool (Gentle)

Good tutorial about yacc and lex

Flex: fast lexical analyzer for C/C++

Lex: lexical analyzer generators for C/C++

JavaCC: parser and scanner generator for Java

JLex: lexical analyzer generator for Java

yacc: yet-another-compiler-compiler

bison: the gnu version of yacc, compatible with yacc


Interesting Links

Nice article in Linux Journal about using Lex and Yacc in an innovative way!

An Interview with Michael Rabin: ACM Communications Magazine Vol 53, No. 2, Feb 2010  See how automata theory was discovered and evolved.

Compiler Research: The Next 50 years:  ACM Communications Magazine, Vol 52, No. 2, Feb 2009

Power Efficient Software: ACM Communications Magazine Vol 53, No. 2, Feb 2010

GCC: The Gnu Compiler Colection

Compilers resources page

Compilers google group

PHP to C++ translator: (this link is provided by Alex Lobascio):  facebook folks are not wasting their time!

Phoenix: the basis for all future Microsoft compiler technologies