Presentation is loading. Please wait.

Presentation is loading. Please wait.

Feather-Weight Java COS 441 Princeton University Fall 2004.

Similar presentations


Presentation on theme: "Feather-Weight Java COS 441 Princeton University Fall 2004."— Presentation transcript:

1 Feather-Weight Java COS 441 Princeton University Fall 2004

2 Feather-Weight Java Core calculus defining “essence” of Java –Target language to explain generics Featherweight Java: A Minimal Core Calculus for Java and GJ by Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Harper’s Notes contains many small and big bugs! Exercise for today is bug hunting as well as understanding FJ

3 Abstract Syntax

4 Example: Point

5 Example: Color Points

6 Class Tables and Programs A class table T is a finite function assigning classes to class names. The classes declared in the class table are bound within the table so that all classes may refer to one another via the class table. A program is a pair ( T, e ) consisting of a class table T and an expression e. We generally suppress explicit mention of the class table, and consider programs to be expressions.

7 Static Semantics All judgments for dynamic and static semantics are implicitly parameterized by a single global class table

8 Subtyping

9 Fields of a Class

10 Signature of a Method

11 should be d i should be m i should be d

12 Expression Typing

13 Typing for Casts typo-in Harper Should be c’

14 Typing for Casts Treatment of cast in original FJ Paper ` (c) e  c` (c) e  c  ` e   c ’ c ’ <: c up-cast ` (c) e  c` (c) e  c  ` e   c ’ c <: c ’ c ’  c down-cast ` (c) e  c` (c) e  c  ` e   c ’ c <: c ’ c ’ <: c stupid-cast

15 Well-Formed Method

16 Doesn’t handle the case of extending a class with a new method only when overriding a class Doesn’t allow subtyping for returned type

17 Well-Formed Method c 0 m(c x) { return e 0 ; } ok in c T  c  = class c extends c’ { …; …} x:c, this :c ` e 0 : c’ 0 c’ 0 <: c 0 if type(m,c’) = c arg ! c ret then c = c arg and c 0 = c ret Buggy Fixed Rule

18 Well-Formed Class

19 should be d

20 Class-Table and Programs

21 Dynamic Semantics Small-step semantics Implicitly index/parameterized by a global class table T –Left unspecified in the rules to avoid clutter Values define as

22 Field Lookup

23 Method Dispatch/Lookup

24 should be m i should be body

25 Class Cast Runtime Check wrt particular class table

26 Search Rules

27 Search Rules (cont.) Left to right evaluation

28 Safety Theorem If ( T, e ) ok and e  * e ’ then either 1. e ’ value, or 2. there exists e ’’ such that e ’  e ’’, or 3. e ’ contains a bad cast of the form ( c ) new ( c ’)( e 0 ) where c ’ <: c “Well formed programs only get stuck in well-defined ways!”

29 Proof of Type Safety

30 should be c ’

31 Factorial in FJ Define a new abstract class Nat class Nat extends Object { Nat(){ super(); } Nat add(Nat n) { /* loop */ return this.add(n); } Nat mul(Nat m) { /* loop */ return this.mul(m); } Nat fact() { /* loop */ return this.fact(); } }

32 The Zero Subclass Define Zero which is a subclass of Nat class Zero extends Nat { Zero() { super(); } Nat add(Nat n){ return n; } Nat mul(Nat m){return new Zero(); } Nat fact() { return new Succ(new Zero()); } }

33 The Succ Subclass class Succ extends Nat { Nat n; Succ(Nat n){super(); this.n = n;} Nat add(Nat n) { return new Succ(this.n.add(n)); } Nat mul(Nat m) { return m.add(m.mul(this.n)); } Nat fact() { return this.mul(this.n.fact()); } }

34 Summary We can apply operational techniques to describe the core of Java Does it scale to full language? Semantics provide description of high- level “reference interpter” less ambigious than english text –More inscrutable to non-experts –Should not be too inscrutable to a COS441 student

35 Summary of Corrections to Notes

36 Page 203 should be d Rule 25.9 should be c’ Rule 25.5

37 Page 203 c 0 m(c x) { return e 0 ; } ok in c T  c  = class c extends c’ { …; …} x:c, this :c ` e 0 : c’ 0 c’ 0 <: c 0 if type(m,c’) = c arg ! c ret then c = c arg and c 0 = c ret Buggy Rule 25.10 Fixed Rule 25.10

38 Page 204 should be d i should be m i should be d Rule 25.15 Rule 25.16

39 Page 206 should be m i should be body Rule 25.27 Rule 25.28

40 Page 207 should be c ’


Download ppt "Feather-Weight Java COS 441 Princeton University Fall 2004."

Similar presentations


Ads by Google