CSE450: Translation of Programming Languages
Spring Semester 2010
Instructor: David M. Bryson
Office: 3114 Engineering
E-mail: brysonda@cse.msu.edu
Web page: http://www.cse.msu.edu/~cse450/
TA: Rui Fang (fangrui@cse.msu.edu)
Meeting time & Room: Monday, Wednesday @ 10:20 - 11:40, 1225 Engineering
Office Hours:
- Instructor: Friday @ 10:20 - 11:40, 3142 Engineering
- TA: Monday/Wednesday @ 4:30 - 5:30, CSE Bone Lab, Engineering
Pre-reqs: (CSE 331 or CSE 335) and (CSE 320 or ECE 331)
I expect a solid working knowledge of C/C++, an understanding of basic algorithms and data structures
(searching, sorting, linked lists, trees).
Textbooks:
- Compilers: Principles Techniques, and Tools by Aho, Lam, and Ullman
-
Addison-Wesley; 2nd edition, ISBN: 0321486811
Required - Main Textbook
- Lex & Yacc by Levine
-
O'Reilly; 2nd edition, ISBN: 1565920007
Required - Tools Reference
Description:
Theory and practice of programming language translation. Languages, grammars and parsing. Lexical, syntactic and semantic
analysis. Compile-time error handling. Code optimization and code generation.
Handouts
Projects
Lectures
- Lecture 1: Introduction (slides, handout)
- Lecture 2: Lexical Analysis (slides, handout)
- Lecture 3: Lexical Analysis with Lex/Flex (slides, handout)
- Lecture 4: Syntax Analysis (slides, handout)
- Lecture 5: Introduction to Parsing and Yacc/Bison (slides, handout)
- Lecture 6: Predictive Parsing, Yacc/Bison, and Grammar Design (slides, handout)
- Lecture 7: Symbol Tables and Advanced Yacc (slides, handout)
- Lecture 8: Abstract Syntax Trees and Yacc Internals (slides, handout)
- Lecture 9: Generating an AST in Yacc (no slides)
Links