Web page for IU Compiler Course for Fall 2020
View the Project on GitHub IUCompilerCourse/IU-P423-P523-E313-E513-Fall-2020
Welcome to Compilers! (P423, P523, E313, E513)
Instructors: Jeremy and Caner
Roll call
What’s a compiler?
Table of Contents of Essentials of Compilation
Assignments, Quizzes, Exams, Grading, Academic Integrity
Technology
Canvas FA20: COMPILERS: 10222 Link to real course web page Grades
Web page: https://iucompilercourse.github.io/IU-P423-P523-E313-E513-Fall-2020/
Chat: Slack http://iu-compiler-course.slack.com/
Email group: Piazza http://piazza.com/iu/fall2020/p423p523e313e513/home
Lecture video: Zoom Meeting ID 950 3713 8921 Google Meet https://meet.google.com/pyt-eqtm-pqw
Github repository for assignment submission, starter code
What to do when technology fails
Concrete Syntax, Abstract Syntax Trees, Racket Structures
Programs in concrete syntax and in ASTs
42
(read)
(- 10)
(+ (- 10) 5)
(+ (read) (- (read)))
Racket structures
(struct Int (value))
(struct Prim (op arg*))
Grammars
Concrete syntax
exp ::= int | (read) | (- exp) | (+ exp exp) | (- exp exp)
R0 ::= exp
Abstract syntax
exp ::= (Int int) | (Prim 'read '())
| (Prim '- (list exp))
| (Prim '+ (list exp exp))
R0 ::= (Program '() exp)
Pattern Matching and Structural Recursion R0-height.rkt