1 / 12

CS453 Compiler Construction

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. Course Logistics (Highlights, see web page for more detail). Schedule Page and Home/News

oriel
Download Presentation

CS453 Compiler Construction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Introduction

  2. 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. 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. Introduction

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

  5. 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]+ Introduction

  6. lexical analysis syntactic analysis plus calls to evaluate and print Simple example: Expression Interpreter character stream (print 2+3*4; …) scanner tokens parser plus interpreter text (14, …) Introduction

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

  8. Why Compilers? Introduction

  9. 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. Introduction

  10. 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 ); • … • } } Introduction

  11. lexical analysis syntactic analysis code gen semantic analysis Structure of the MeggyJava Compiler Analysis Synthesis character stream tokens “words” Atmel assembly code PA1: Write test cases in C++ and MeggyJava, and Atmel warmup PA2: MeggyJava scanner and setPixel PA3: add exps and control flow (AST) PA4: add methods (symbol table) PA5: add variables and objects AST “sentences” AST and symbol table Introduction

  12. Before Next Time • See schedule. • Read all the pages of the website. • Make sure you can ssh into CS linux machines. Introduction

More Related