27
1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

1

Program Testing and Analysis:

Operational Semantics

Dr. Michael Pradel

Software Lab, TU Darmstadt

Page 2: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

2

Warm-up Quiz

var e = eval;

(function f() {var x = 5;e("x=7")console.log(x);

})();

What does the following code print?

Options: 5, 7, or something else

Page 3: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

3

Warm-up Quiz

var e = eval;

(function f() {var x = 5;e("x=7")console.log(x);

})();

Correct answer: 5

Page 4: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

3

Warm-up Quiz

var e = eval;

(function f() {var x = 5;e("x=7")console.log(x);

})();

Correct answer: 5

eval() evaluatesJavaScript codegiven as a string

Page 5: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

3

Warm-up Quiz

var e = eval;

(function f() {var x = 5;e("x=7")console.log(x);

})();

Correct answer: 5

Store function into variable(functions are first-classobjects)

Page 6: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

3

Warm-up Quiz

var e = eval;

(function f() {var x = 5;e("x=7")console.log(x);

})();

Correct answer: 5

Define a function andcall it immediately

Page 7: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

3

Warm-up Quiz

var e = eval;

(function f() {var x = 5;e("x=7")console.log(x);

})();

Correct answer: 5

Indirect eval():Works in globalscope rather thanlocal scope

Page 8: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

4

Follow Up on Last Week

(Hand-written notes)

Page 9: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

5

Big Picture

Last lecture:� Syntax of languages

� Representations of programs

This lecture:� Assign meaning (= semantics) to programs

� Focus: Operational semantics of imperativelanguages

� Formal foundation for specifying languages andfor describing dynamic analyses

Page 10: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

6

Plan for Today

� Motivation & preliminaries

� Abstract syntax of SIMP

� An abstract machine for SIMP

� Structural operation semantics forSIMP� Small-step semantics

� Big-step semantics

Page 11: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

1

Page 12: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

2

Page 13: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

3

Page 14: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

4

Page 15: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

6

Page 16: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

5

Page 17: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

7

Plan for Today

� Motivation & preliminaries

� Abstract syntax of SIMP

� An abstract machine for SIMP

� Structural operation semantics forSIMP� Small-step semantics

� Big-step semantics

Page 18: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

7

Page 19: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

8

Page 20: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

9

Page 21: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

10

Page 22: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

11

Page 23: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

8

Plan for Today

� Motivation & preliminaries

� Abstract syntax of SIMP

� An abstract machine for SIMP

� Structural operation semantics forSIMP� Small-step semantics

� Big-step semantics

Page 24: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

12

Page 25: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

13

Page 26: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

14

Page 27: Operational Semantics Program Testing and Analysis · 1 Program Testing and Analysis: Operational Semantics Dr. Michael Pradel Software Lab, TU Darmstadt

15