Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS453 LectureIntroduction1 CS453 Compiler Construction Original Design: Michelle Strout Instructor:Wim Bohm

Similar presentations


Presentation on theme: "CS453 LectureIntroduction1 CS453 Compiler Construction Original Design: Michelle Strout Instructor:Wim Bohm"— Presentation transcript:

1 CS453 LectureIntroduction1 CS453 Compiler Construction Original Design: Michelle Strout Instructor:Wim Bohm wim.bohm@gmail.comwim.bohm@gmail.com, bohm@cs.colostate.edu Computer Science Building 344 Office hour: Monday 1-2pm TA: Andy Stone aistone@gmail.comaistone@gmail.com, stonea@cs.colostate.edu URL: http://www.cs.colostate.edu/~cs453 Send around sheet to collect email addresses and CS linux account names.

2 Course Logistics (Highlights, see web page for more detail) Progress Page and Home/News Read both of these daily. Syllabus and Grading Professional Conduct Do your own work. Act like a professional in the lab. Participate Come to class and recitation. Come to lab and office hours. Provide anonymous feedback online. CS453 LectureIntroduction2

3 CS453 LectureIntroduction3 Plan for Today Course Logistics 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? Interpreter and Compiler Structure, or Software Architecture Overview of Programming Assignments –The MeggyJava compiler we will be building.

4 CS453 LectureIntroduction4 Structure of a Typical Compiler “sentences” Synthesis optimization code generation target language IR IR code generation IR Analysis character stream lexical analysis “words”tokens semantic analysis syntactic analysis AST annotated AST interpreter

5 CS453 LectureIntroduction5 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,)

6 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]+ CS453 LectureIntroduction6

7 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 | 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 LectureIntroduction7

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 Don’t get behind! It will be hard, if not impossible, to catch up. CS453 LectureIntroduction8

9 CS453 LectureIntroduction9 Example MeggyJava program MeggyJava: a Java subset for the Meggy toy we are playing with in this course. Example code: import meggy.Meggy; class PA3Flower { public static void main(String[] whatever){ { // Upper left petal, clockwise Meggy.setPixel( (byte)1, (byte)1, Meggy.Color.WHITE ); Meggy.setPixel( (byte)2, (byte)1, Meggy.Color.WHITE ); … }

10 CS453 LectureIntroduction10 Structure of the MeggyJava Compiler “sentences” SynthesisAnalysis character stream lexical analysis “words”tokens semantic analysissyntactic analysis AST AST and symbol table code gen Atmel assembly code PA1: Write test cases in C++ and MeggyJava, and Atmel warmup PA2: MeggyJava scanner PA3: setPixel compiler (no AST/ symtab) PA4: add control flow (AST/symtab) PA5: add methods (calls) PA6: add variables and objects PA7: add arrays


Download ppt "CS453 LectureIntroduction1 CS453 Compiler Construction Original Design: Michelle Strout Instructor:Wim Bohm"

Similar presentations


Ads by Google