CS453 Compiler Construction Instructor: Wim Bohm - - PowerPoint PPT Presentation
CS453 Compiler Construction Instructor: Wim Bohm - - PowerPoint PPT Presentation
CS453 Compiler Construction Instructor: Wim Bohm bohm@cs.colostate.edu Computer Science Building 470 TA: tba tba @cs.colostate.edu URL: http://www.cs.colostate.edu/~cs453 CS453 Lecture Introduction 1 Course Logistics (Highlights, see web
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 RamCT discussion board.
CS453 Lecture Introduction 2
CS453 Lecture Introduction 3
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 MeggyJava compiler we will be building.
CS453 Lecture Introduction 4
Structure of a Typical Compiler
“sentences” Synthesis
- ptimization
code generation target language IR IR code generation IR Analysis character stream lexical analysis “words” tokens semantic analysis syntactic analysis AST annotated AST interpreter
Expression Language: tokens Tokens:
keyword(s): “print”
- perators/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]+
CS453 Lecture Introduction 5
CS453 Lecture Introduction 6
Simple example: Expression Interpreter
character stream (print 2+3*4; …) lexical analysis tokens syntactic analysis plus calls to evaluate and print scanner parser plus interpreter text (14, …)
Expression Language: sentences Sentences:
Program sentences (statements here) are recognized by a parser. Valid programs are defined by a Grammar: Program::= stmts 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
CS453 Lecture Introduction 7
Why Compilers?
CS453 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 1000s of lines