For Better Performance Please Use Chrome or Firefox Web Browser

Designing Compilers Principles and Techniques

In this course we learn how to design and implement a compiler. Main topics are as follows:

-Weeks #1 and #2: Basics, Compiler Structure, Compiled vs. Interpreted Programming Languages, One-pass vs. Multi-pass Compilers.

-Weeks #3 and #4: Lexical Analysis: Regular Languages, DFAs and NFAs, Tokenization, Buffering, Error handling techniques, Implementing a lexical analyzer using Flex.

-Weeks #5 and #6: Syntax Analysis: CFG vs. Regular Grammar, Predictive Parsers, Top-down Parsers, Recursive Descent and LL(k) Parsers, Error Handling in LL(k) parsers.

-Weeks #7 and #8 and #9: Syntax Analysis: Bottom-up Parsers, LR(k) Parsers, LR(0), SLR(1), CLR(1), LALR(1), Error Handling, Implementing a syntax analyzer using YACC.

-#Weeks #10 and #11: Semantic Analysis: CSG vs. CFG, Attribute Grammar, Syntax-Directed Translation, Synthesized and Inherited Attributes, Semantic Analysis and Top-down Parsing.

-Weeks #12 and #13: Code Generation, 3-argument Intermediate Code, Semantic Stack, Backpacking technique, Code generation and Bottom-up parsing, Code generation using YACC.

-#Weeks #14 and #15: Optimization. Control Flow and Data Flow, Intermediate Code Optimization, Machine Code Optimization.

#Week #16. Misc. Topics: Garbage Collection, Security, etc.

 

 

Prerequisites: 

Automata Theory

Grading Policy: 

Midterm Exam: 5 pts.

Final Exam: 8 pts.

Exercises: 3 pts.

Course Project: 3 pts.

Class Activities: 2 pts.

(Total: 21 pts.)

Teacher Assistants: 

Arash Mari Oryad

Milad Golgol Nia

Time: 

Sunday-Tuesday 9:30-11:00

Term: 
Fall 2019
Grade: 
Undergraduate

تحت نظارت وف ایرانی