CS4215 week 2

Denotational semantics

Syntax

Static semantics

Dynamic semantics

Quiz

How do we add an expression of the form E1 ? E2 : E3

Q1

E1 E2 E3
—————— 
E1 ? E2 : E3

Q3

E1: Bool E2: T E3: T 
—————— 
p3[E1, E2, E3]: T 

Q5

E1 >--> true E2 >--> v
-------------------------------------
if[E1, E2, E3] >--> v



E1 >--> false E3 >--> v
-------------------------------------
if[E1, E2, E3] >--> v 

Q7

E1 |-> E'
--------------------------
E1?E2:E3 |-> E'?E2:E3 

E1 ? E2 : E3 > ??
———— 
True ? E2 : E3 > E2 
———— 

E1 ? E2 : E3 > ??
———— 
False ? E2 : E3 > E3 

==

Q9

E1 ↪ s1 E2 ↪ s2 E3 ↪ s3 len(s2.JMP l3) = l2 len(s3) = l3
------------------------------------------------------------------------------------------------
if[E1,E2,E3] ↪ s1.JZ l2.s2.JMP l3.s3

(We'll use ⇒ instead of the double arrow for VM state transitions)

s(pc) = JZ n
-------------------------------------
(true.os, pc) ⇒ (os, pc+1)

s(pc) = JZ n
--------------------------------------------
(false.os, pc) ⇒ (os, pc+1+n)

s(pc) = JMP n
----------------------------------
(os, pc) ⇒ (os, pc+1+n)