Compiler Construction 0368-3133 Dr. Noam Rinetzky and Orr Tamir School of Computer Science Tel Aviv University

Slides:



Advertisements
Similar presentations
Air Force Institute of Technology Electrical and Computer Engineering
Advertisements

Intermediate Code Generation
Chapter 6 Type Checking. The compiler should report an error if an operator is applied to an incompatible operand. Type checking can be performed without.
Programming Languages and Paradigms The C Programming Language.
Compiler construction in4020 – lecture 10 Koen Langendoen Delft University of Technology The Netherlands.
1 Mooly Sagiv and Greta Yorsh School of Computer Science Tel-Aviv University Modern Compiler Design.
Winter Compiler Construction T7 – semantic analysis part II type-checking Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv.
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
Compiler Construction Rina Zviel-Girshin and Ohad Shacham School of Computer Science Tel-Aviv University.
Lecture 13 – Compiling Object-Oriented Programs Eran Yahav 1 Reference: MCD
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
1 Chapter 4 Language Fundamentals. 2 Identifiers Program parts such as packages, classes, and class members have names, which are formally known as identifiers.
The environment of the computation Declarations introduce names that denote entities. At execution-time, entities are bound to values or to locations:
Compiler Summary Mooly Sagiv html://
Terms and Rules Professor Evan Korth New York University (All rights reserved)
1 Type Type system for a programming language = –set of types AND – rules that specify how a typed program is allowed to behave Why? –to generate better.
Compiler Construction Ran Shaham and Ohad Shacham School of Computer Science Tel-Aviv University.
Lecture 1: Overview of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++ Designed.
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
Differences between C# and C++ Dr. Catherine Stringfellow Dr. Stewart Carpenter.
OOP Languages: Java vs C++
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes.
Pointer Data Type and Pointer Variables
Java and C++, The Difference An introduction Unit - 00.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 14: Pointers, Classes, Virtual Functions, and Abstract Classes.
Imperative Programming
EECE 310: Software Engineering Lecture 2: Understanding Objects in Java and Types.
COP4020 Programming Languages
Adapted from Prof. Necula UCB CS 1641 Overview of COOL ICOM 4029 Lecture 2 ICOM 4029 Fall 2008.
Chapter 2 Basic Elements of Java. Chapter Objectives Become familiar with the basic components of a Java program, including methods, special symbols,
Chapter 2: Everything is an Object ● C++ has many non object oriented features inherited from C. It is a hybrid language meaning that it support different.
Geoff Holmes and Bernhard Pfahringer COMP206-08S General Programming 2.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
JAVA 0. HAFTA Algorithms FOURTH EDITION Robert Sedgewick and Kevin Wayne Princeton University.
Code Generation III. PAs PA4 5.1 – 7.2 PA5 (bonus) 24.1 –
Basic Semantics Associating meaning with language entities.
CSE 425: Data Types I Data and Data Types Data may be more abstract than their representation –E.g., integer (unbounded) vs. 64-bit int (bounded) A language.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
Compiler Construction Lexical Analysis. 2 Administration Project Teams Project Teams Send me your group Send me your group
Types in programming languages1 What are types, and why do we need them?
Types(1). Lecture 52 Type(1)  A type is a collection of values and operations on those values. Integer type  values..., -2, -1, 0, 1, 2,...  operations.
School of Computer Science & Information Technology G6DICP - Lecture 4 Variables, data types & decision making.
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
Java Nuts and Bolts Variables and Data Types Operators Expressions Control Flow Statements Arrays and Strings.
Application development with Java Lecture 21. Inheritance Subclasses Overriding Object class.
Semantic Analysis II. Messages Please check lecturer notices in the Moodle Appeals  Legitimate: “I don’t have the bug you mentioned…”  Illegitimate:
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Semantic Analysis II Type Checking EECS 483 – Lecture 12 University of Michigan Wednesday, October 18, 2006.
Winter Compiler Construction Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv University.
Agenda Comments Identifiers Keywords Syntax and Symentics Indentation Variables Datatype Operator.
Java & C++ Comparisons How important are classes and objects?? What mechanisms exist for input and output?? Are references and pointers the same thing??
LECTURE 3 Compiler Phases. COMPILER PHASES Compilation of a program proceeds through a fixed series of phases.  Each phase uses an (intermediate) form.
Announcements You will receive your scores back for Assignment 2 this week. You will have an opportunity to correct your code and resubmit it for partial.
 Data Type is a basic classification which identifies different types of data.  Data Types helps in: › Determining the possible values of a variable.
Object Oriented Programming Lecture 2: BallWorld.
Memory Management in Java Mr. Gerb Computer Science 4.
FASTFAST All rights reserved © MEP Make programming fun again.
 It is a pure oops language and a high level language.  It was developed at sun microsystems by James Gosling.
C11, Implications of Inheritance
Chapter 7 User-Defined Methods.
Names and Attributes Names are a key programming language feature
Winter Compiler Construction
Lecture 2: Data Types, Variables, Operators, and Expressions
Programming Languages and Paradigms
Programming Paradigms
C Basics.
An Introduction to Java – Part I, language basics
Programming Languages and Paradigms
ICOM 4029 Fall 2003 Lecture 2 (Adapted from Prof. Necula UCB CS 164)
Presentation transcript:

Compiler Construction Dr. Noam Rinetzky and Orr Tamir School of Computer Science Tel Aviv University

2 Executable code exe Source text txt Compiler Semantic Representation Backend (synthesis) Frontend (analysis) IC Program ic x86 executable exe Lexical Analysis Syntax Analysis Parsing AST Symbol Table etc. Inter. Rep. (IR) Code Generation

3 How Lexical Analysis Syntax Analysis Parsing AST Symbol Table etc. Inter. Rep. (IR) Code Generation JFlexJavaCupJava IC Program prog.ic x86 assembly prog.s x86 assembly prog.s libic.a (libic + gc) GNU assembler prog.o GNU linker prog.exe

4 50% exam 50% exam 50% project 50% project 5 assignments – different weights 5 assignments – different weights PA1 - lexical analysis PA1 - lexical analysis PA2 - parsing PA2 - parsing PA3 - semantic analysis PA3 - semantic analysis PA4 - IR PA4 - IR PA5 - code generation PA5 - code generation code checked both automatically and manually code checked both automatically and manually Grading

5 Teams of 3 students Teams of 3 students Submission in your team account Submission in your team account me before next meeting me before next meeting List of members (id number, first name, last name) List of members (id number, first name, last name) Team account user name (on nova) Team account user name (on nova) There is adequate time to complete assignments There is adequate time to complete assignments Start early and please follow directions Start early and please follow directions Project guidelines

6 Goals: Goals: Understand the scope of the project Understand the scope of the project IC language overview IC language overview PA 0 PA 0 Today IC Language ic Executable code exe Lexical Analysis Syntax Analysis Parsing AST Symbol Table etc. Inter. Rep. (IR) Code Generation

7 IC language - main features Strongly typed Strongly typed Primitive types for int, boolean, string Primitive types for int, boolean, string Reference types Reference types Object oriented Object oriented Objects, virtual method calls Objects, virtual method calls Inheritance Inheritance Memory management Memory management Dynamic heap allocation of objects and arrays Dynamic heap allocation of objects and arrays Automatic deallocation (garbage collection) Automatic deallocation (garbage collection) Runtime safety checks Runtime safety checks Null dereference Null dereference Division by 0 Division by 0 Array access out of bounds Array access out of bounds

8 Unsupported features Access control Access control Everything is public Everything is public Interfaces Interfaces Method overloading (but still allow overriding) Method overloading (but still allow overriding) Exceptions Exceptions Packages Packages

9 IC program structure Program is sequence of class definitions Program is sequence of class definitions Class is sequence of fields and methods Class is sequence of fields and methods static methods static methods virtual methods virtual methods exactly one main method (per all classes) static void main(string[] args) {...} exactly one main method (per all classes) static void main(string[] args) {...}

10 IC program structure Variables can be declared anywhere in a method Variables can be declared anywhere in a method Check initialization before use Check initialization before use Object fields and Array elements are initialized Object fields and Array elements are initialized Strings are primitive types Strings are primitive types Arrays T[ ], T[ ][ ] Arrays T[ ], T[ ][ ]

11 IC types Every class is a type Every class is a type Primitive types: Primitive types: int :1,-1,2,-2,… int :1,-1,2,-2,… boolean : true, false boolean : true, false string : “hello” string : “hello” References : null References : null Arrays : int [] x = new int[5]; x.length==5; Arrays : int [] x = new int[5]; x.length==5; All variables must be declared All variables must be declared compiler infers types for expressions compiler infers types for expressions Type safety Type safety Well-typed programs do not result in runtime type errors Well-typed programs do not result in runtime type errors

12 Subtyping Inheritance induces subtyping relation Inheritance induces subtyping relation Type hierarchy yields acyclic graph Type hierarchy yields acyclic graph Subtyping rules: Subtyping rules: A extends B {…} A ≤ B A ≤ A A ≤ B B ≤ C A ≤ C null ≤ A Subtyping does not extend to array types Subtyping does not extend to array types A subtype of B then A[] is not a subtype of B[] A subtype of B then A[] is not a subtype of B[]

13 Expressions and Statements Every expression has a type and a value Every expression has a type and a value Arithmetic operators: + - * / % Arithmetic operators: + - * / % Relational comparison: == = Relational comparison: == = Logical operators: && || Logical operators: && || Unary operators: ! – Unary operators: ! – Loops: while ( expr ) { stmt } Loops: while ( expr ) { stmt } Conditionals: if ( expr ) stmt else stmt Conditionals: if ( expr ) stmt else stmt Assignment: x = expr Assignment: x = expr break, continue break, continue

14 Objects Instances of classes are objects Instances of classes are objects class Point { int x; // initialized to 0 int y; } new Point() allocates object of class Point on heap and initializes fields new Point() allocates object of class Point on heap and initializes fields No arguments No arguments An object can be thought of as a struct (record) with a slot for each field An object can be thought of as a struct (record) with a slot for each field 00 xy

15 Methods class Point { int x; int y; Point movePoint(int newx, int newy) { x = newx; y = newy; return this; } -- close method } -- close class Methods can refer to the current object using this Methods can refer to the current object using this

16 class TestPoint { Point p; Point q; boolean test() { p = new Point(); q = p.movePoint(1,2); return p==q; }} class Point { int x; int y; Point movePoint(int newx, int newy) { x = newx; y = newy; return this; }} 00 xy p 12 xy p q Example 12 xy p this

17 Method implementation Each object knows how to access method code Each object knows how to access method code As if object contains slot pointing to the code As if object contains slot pointing to the code In reality implementations save space by sharing these pointers among instances of the same class In reality implementations save space by sharing these pointers among instances of the same class 00 xy * movePoint 00 xy * methods

18 Inheritance example We can extend points to colored points: We can extend points to colored points: class ColoredPoint extends Point { int color; Point movePoint(int newx, int newy) { color = 0; x = newx; y = newy; return this; }} 00 xy * movePoint methods 0 color

19 Method invocation and inheritance Example: Example: Point p; p = new ColoredPoint(); p.movePoint(1,2); p has static type Point p has static type Point p has dynamic type ColoredPoint p has dynamic type ColoredPoint p.movePoint invokes ColoredPoint implementation p.movePoint invokes ColoredPoint implementation

20 IC memory management Memory allocated every time new is used Memory allocated every time new is used Memory deallocated automatically by reclaiming unreachable objects Memory deallocated automatically by reclaiming unreachable objects Done by a garbage collector (GC) Done by a garbage collector (GC) Use off-the-shelf GC Use off-the-shelf GC 00 xy a … a = b 12 xy b 00 xy 12 xy b a unreachable object

21 Library functions libic provides: libic provides: I/O operations I/O operations datatype conversions datatype conversions system-level operations system-level operations class Library { static void println(string s); // prints string s followed by a newline. static void println(string s); // prints string s followed by a newline. static void print(string s); // prints string s. static void print(string s); // prints string s. static void printi(int i); // prints integer i. static void printi(int i); // prints integer i. static void printb(boolean b); // prints boolean b. static void printb(boolean b); // prints boolean b. static int readi(); // reads one character from the input. static int readi(); // reads one character from the input. static string readln(); // reads one line from the input. static string readln(); // reads one line from the input. static boolean eof(); // checks end-of-file on standard input. static boolean eof(); // checks end-of-file on standard input. static int stoi(string s, int n); // returns the integer that s represents static int stoi(string s, int n); // returns the integer that s represents // or n if s is not an integer. // or n if s is not an integer. static string itos(int i); // returns a string representation of i. static string itos(int i); // returns a string representation of i. static int[] stoa(string s);// an array with the ascii codes of chars in s. static int[] stoa(string s);// an array with the ascii codes of chars in s. static string atos(int[] a);// builds a string from the ascii codes in a. static string atos(int[] a);// builds a string from the ascii codes in a. static int random(int n); // returns a random number between 0 and n-1. static int random(int n); // returns a random number between 0 and n-1. static int time(); // number of milliseconds since program start. static int time(); // number of milliseconds since program start. static void exit(int n); // terminates the program with exit code n. static void exit(int n); // terminates the program with exit code n.}

22 For this week Split into teams Split into teams Send me with team members and representative account Send me with team members and representative account PA 0 PA 0 Read IC language specification Read IC language specification Get acquainted with Java Get acquainted with Java J2SE 1.5 (or higher) J2SE 1.5 (or higher) J2SE 1.5 J2SE 1.5 Eclipse IDE Eclipse IDE Eclipse IDE Eclipse IDE Install and play with JFLex and Java Cup Install and play with JFLex and Java Cup

23 Next week Lexical analysis Lexical analysis JFLex JFLex Lexical analyzer generator in Java Lexical analyzer generator in Java Explain PA1 Explain PA1