This syllabus has been revised in the recent past with the course number being the same.
Showing the latest revision in section Curriculum 2022. The earlier version is in section Curriculum 2017.

Curriculum 2017

Week1: Specification of language tokens using one of the tools for lexical analysis: lex, flex, ml-lex .

Week2 : Language to evaluate arithmetic expressions.

Week3 and Week4 : Specification of language using one of the LALR parsing tools: yacc, bison, ml-yacc,

Week5 and Week6 : Develop a parser for a language that consists of: arithmetic, relational, and logical operators, control statements, loops, and functions.

Week7 and Week 8: Creation of Abstract Syntax Tree (AST) from the language grammar

Week9 and Week10: Conversion of AST to an intermediate code.

Week 11 and Week 12: Code generation from the intermediate code for a specific compute architecture: MIPS.

Curriculum 2022

Prerequisite (if any): Compiler Design (prerequisite/corequisite)

Week1: Specification of language tokens using one of the tools for lexical analysis: lex, flex, ml-lex .

Week2 : Language to evaluate arithmetic expressions.

Week3 and Week4 : Specification of language using one of the LALR parsing tools: yacc, bison, ml-yacc,

Week5 and Week6 : Develop a parser for a language that consists of: arithmetic, relational, and logical operators, control statements, loops, and functions.

Week7 and Week 8: Creation of Abstract Syntax Tree (AST) from the language grammar

Week9 and Week10: Conversion of AST to an intermediate code.

Week 11 and Week 12: Code generation from the intermediate code for a specific compute architecture: MIPS.

Learning Outcomes

Develop a compiler covering all phases from lexical analysis to code generation and gain the skill of developing a system software from scratch.