CS 453 Compiler Construction Instructor Wim Bohm bohmcs
CS 453 Compiler Construction Instructor: Wim Bohm bohm@cs. colostate. edu Computer Science Building 470 TA: tba@cs. colostate. edu URL: http: //www. cs. colostate. edu/~cs 453 CS 453 Lecture Introduction 1
Course Logistics (Highlights, see web page for more detail) Schedule Page and Home/News Read both of these daily. Lots of reading in the first couple of weeks. Resources Page Syllabus and Grading Professional Conduct Do your own work. Act like a professional in the lab. Participate Come to class and recitation. Ask questions and post answers on the Ram. CT discussion board. CS 453 Lecture Introduction 2
Plan for Today Course Logistics (done) Interpreter and Compiler Structure, or Software Architecture A scanner/parser/interpreter for a simple expression language What is the difference between a compiler and an interpreter? Compilers class and reality – Why study compilers? Overview of Programming Assignments – The Meggy. Java compiler we will be building. CS 453 Lecture Introduction 3
Structure of a Typical Compiler Analysis Synthesis character stream lexical analysis tokens IR code generation “words” IR syntactic analysis AST optimization “sentences” IR code generation semantic analysis annotated AST target language interpreter CS 453 Lecture Introduction 4
Expression Language: tokens Tokens: keyword(s): “print” operators/delimiters: “+”, ”-”, “*”, “; ” integer literals: “ 0”, “ 1”, “ 2” , …, ” 10”, “ 11”, … , “ 100”, … Symbols (Tokens+optional value) are formed by a scanner performing lexical analysis, while reading from a character stream eg: PRINT token+null, SEMI token+null, NUMBER token + Integer-value Valid tokens are defined by regular expressions, e. g. : NUMBER: [0 -9]+ CS 453 Lecture Introduction 5
Simple example: Expression Interpreter character stream (print 2+3*4; …) lexical analysis scanner tokens syntactic analysis plus calls to evaluate and print parser plus interpreter text (14, …) CS 453 Lecture Introduction 6
Expression Language: sentences Sentences: Program sentences (statements here) are recognized by a parser. Valid programs are defined by a Grammar: Program: : = stmts: : = stmts stmt | <empty> stmt: : = PRINT exp SEMI exp: : = exp + exp | exp – exp | exp * exp | NUMBER In our case, the parser evaluates the expressions and prints their values, i. e. the parser interprets the language In this week’s recitation you will be exercising with this language, and use tools to generate a scanner and a parser / interpreter CS 453 Lecture Introduction 7
Why Compilers? CS 453 Lecture Introduction 8
A LOT OF CONCEPTS, TOOLS, and CODE Compilers are large and complex software structures In this course you will learn a lot of concepts Regular and Context Free grammars, visitor pattern, architecture In this course you will use A LOT of tools Scanner generators and Parser Generators (recitation this week) Eclipse + version control Makefiles jar files assemblers (Meggy) hardware In this course you will write a lot of code 1000 s of lines Don’t get behind! It will be hard, if not impossible, to catch up. CS 453 Lecture Introduction 9
Example Meggy. Java program Meggy. Java: a Java subset for the Meggy toy we are playing with in this course. Example code: import meggy. Meggy; class PA 3 Flower { public static void main(String[] whatever){ { // Upper left petal, clockwise Meggy. set. Pixel( (byte)1, Meggy. Color. WHITE ); Meggy. set. Pixel( (byte)2, (byte)1, Meggy. Color. WHITE ); … } } CS 453 Lecture Introduction 10
Structure of the Meggy. Java Compiler Analysis Synthesis character stream lexical analysis tokens “words” syntactic analysis AST “sentences” semantic analysis AST and symbol table CS 453 Lecture code gen Atmel assembly code PA 1: Write test cases in C++ and Meggy. Java, and Atmel warmup PA 2: Meggy. Java scanner and set. Pixel PA 3: add exps and control flow (AST) PA 4: add methods (symbol table) PA 5: add variables and objects Introduction 11
Before Next Time See schedule. Read all the pages of the website. Make sure you can ssh into CS linux machines. CS 453 Lecture Introduction 12
- Slides: 12