270 likes | 444 Views
Formal Semantics of Programming Language s. Topic 2: Operational Semantics. 虞慧群 yhq@ecust.edu.cn. IMP: A Simple Imperative Language. numbers N Positive and negative numbers n, m N truth values T={true, false} locations Loc X, Y Loc arithmetic Aexp a Aexp
E N D
Formal Semantics of Programming Languages Topic 2: Operational Semantics 虞慧群 yhq@ecust.edu.cn
IMP: A Simple Imperative Language • numbers N • Positive and negative numbers • n, m N • truth values T={true, false} • locations Loc • X, Y Loc • arithmetic Aexp • a Aexp • boolean expressions Bexp • b Bexp • commands Com • c Com
(3+5) 3 + 5 3 + 5 5+ 3 Abstract Syntax for IMP • Aexp • a ::= n | X | a0 + a1 | a0 – a1 | a0 a1 • Bexp • b ::= true | false | a0 = a1 | a0 a1 | b | b0 b1 | b0 b1 • Com • c ::= skip | X := a | c0 ; c1 | if b then c0else c1| while b do c 2+34-5 (2+(34))-5 ((2+3)4))-5
Example Program Y := 1; while (X=1) do Y := Y * X; X := X - 1
Expression Evaluation • States • Mapping locations to values • - The set of states • : Loc N • (X)= X=value of X in • = [ X 5, Y 7] • The value of X is 5 • The value of Y is 7 • The value of Z is undefined • For a Exp, , n N, • <a, > n • a is evaluated in to n
Evaluating (a0 + a1) at • Evaluate a0 to get a number n0 at • Evaluate a1 to get a number n1 at • Add n0 and n1
Expression Evaluation Rules • Numbers • <n, > n • Locations • <X, > (X) • Sums • Subtractions • Products Axioms
Derivations • A rule instance • Instantiating meta variables with corresponding values
Derivation (Tree) • Axioms in the leafs • Rule instances at internal nodes
Computing a derivation • We write <a, > n when there exists a derivation tree whose root is <a, > n • Can be computed in a top-down manner • At every node try all derivations “in parallel” 5 16 21
Recap • Operational Semantics • The rules can be implemented easily • Define interpreter • Structural Operational Semantics • Syntax directed • Natural semantics
Equivalence of IMP expressions iff a0 a1
Boolean Expression Evaluation Rules • <true, > true • <false, > false
Equivalence of Boolean expressions iff b0b1
Extensions • Shortcut evaluation of Boolean expressions • “Parallell” evaluation of Boolean expressions • Other data types
The execution of commands • <c, > ’ • c terminates on in a final state ’ • Initial state 0 • 0(X)=0 for all X • Handling assignments <X:=5, > ’ A notation: <X:=5, > [5/X]
Rules for commands Atomic commands • <skip, > • Sequencing: • Conditionals:
Example Program Y := 1; while (X=1) do Y := Y * X; X := X - 1
Equivalence of commands iff c0c1
Proposition 2.8 while b do c if then (c; while b do c) else skip
Small Step Operational Semantics • The natural semantics define evaluation in large steps • Abstracts “computation time” • It is possible to define a small step operational semantics • <a, > 1 <a’, ’> • “one” step of executing a in a state yields a’ in a state ’
Summary • Operational semantics enables to naturally express program behavior • Can handle • Non determinism • Concurrency • Procedures • Object oriented • Pointers and dynamically allocated structures • But remains very closed to the implementation • Two programs which compute the same functions are not necessarily equivalent
Exercise 2 (1) Evaluate a (X4) + 3 in a state s.t. (X)=0. (2) Write down rules which express the “parallel” evaluation of b0 and b1 in b0 V b1 so that evaluates to true if either b0 evaluates to true, and b1 is unevaluated, or b1 evaluates to true, and b0 is unevaluated.