- English
- فارسی
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.
Automata Theory
Midterm Exam: 5 pts.
Final Exam: 8 pts.
Exercises: 3 pts.
Course Project: 3 pts.
Class Activities: 2 pts.
(Total: 21 pts.)
Arash Mari Oryad
Milad Golgol Nia
Sunday-Tuesday 9:30-11:00