programming language semantics mooly sagiveran yahav msagiv@postmsagiv@postyahave@post schrirber...
Post on 21-Dec-2015
220 views
TRANSCRIPT
Programming Language Semantics
Mooly Sagiv Eran Yahavmsagiv@post yahave@postSchrirber 317 Open space03-640-7606 03-640-5358
html://www.cs.tau.ac.il/~msagiv/courses/sem03.html
Textbook:Winskel The Formal Semantics of Programming Languages
Outline• Course requirements• What is semantics• Who needs semantics• Forms of semantics• Tentative Plan• Introduction to operational semantics
Course Requirements• Prerequisites
– Compiler Course– Basic set theory and logic
• A theoretical course– Forms of induction– Domain theory– No algorithms
• Grade– Course Notes 10%– Assignments 60%
• Mostly theoretical with some programming
– Home exam 30%
Modern Programming Languages
• Imperative– PL/1– Pascal– C
• Object Oriented– C++– Java– C#
• Functional– Scheme– ML
• Logic– Prolog
Programming Languages• Syntax
– Which string is a legal program?
– Usually defined using context free grammar+ contextual constraints
• Semantics– What does a program mean?
– What is the output of the program on a given run?
– When does a runtime error occur?
– A formal definition
Benefits of Formal Semantics• Programming language design
– hard- to-define= hard-to-implement=hard-to-use
– Avoid design mistakes
• Programming language implementation– Compiler Correctness
• Correctness of program optimizations
• Design of Static Analysis
• Programming language understanding• Program correctness• Program equivalence• Automatic generation of interpreter• Techniques used in software engineering
Desired Features of PL Semantics
• Tractable– as simple as possible without losing the ability to express
behavior accurately
• Abstract– uncluttered by irrelevant detail
• Computational– an accurate abstraction from runtime behavior
• Compositional– The meaning of compound language construct is defined using
the meaning of subconstructs– Supports modular reasoning
Alternative Formal Semantics• Operational Semantics [Plotkin]
– The meaning of the program is described “operationally”
– Structural Operational Semantics
• Denotational Semantics [Strachey, Scott]– The meaning of the program is an input/output relation
• Axiomatic Semantics [Floyd, Hoare]– The meaning of the program is observed properties
– Proof rules to show that the program is correct
• Complement each other
Tentative Plan• A simple programming language IMP
– Structural operational Semantics of IMP– Denotational Semantics of IMP– [Axiomatic Semantics of IMP]– Non-Determinism and Parallelism
• Advanced programming languages– Java byte code
Chapter 2
Introduction to
Operational Semantics
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 c0 else 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
But what about semantics
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
10,10
1,1,0,0nnnwhere
naa
nana
10,10
1,1,0,0nnnwhere
naa
nana
10,10
1,1,0,0nnnwhere
naa
nana
Axiom
s
Derivations• A rule instance
– Instantiating meta variables with corresponding values
632
3322
,
0,,0,
1232
4332
,
0,,0,
Derivation (Tree)
• Axioms in the leafs• Rule instances at
internal nodes
0Init 0 , 55 0 , 77 0 , 99 0 ,
55)Init( 0 , 1697 0 ,
219)(75)Init( 0 ,
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”
0Init 0 , 55 0 , 77 0 , 99 0 ,
?5)Init( 0 , ?97 0 ,
?9)(75)Init( 0 ,
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
a0 a1 iff
nanaNn ,,. 10
Boolean Expression Evaluation Rules• <true, > true• <false, > false
•
•
•
•
mnifaa
mana
true
,10
,1,,0
mnifaa
mana
false
,10
,1,,0
mnifaa
mana
true,10
,1,,0
mnnotifaa
mana
true
,10
,1,,0
Boolean Expression Evaluation Rules(cont)
•
•
•
•
otherwisetand
whentwhere 10
,10
,1,0,0 1
false
truetrue
tt
tbb
tbtb
false
true
,
,
b
b
true
false
,
,
b
b
otherwisetand
whentwhere 10
,10
,1,0,0 1
true
falsefalse
tt
tbb
tbtb
Equivalence of Boolean expressions
b0 b1 iff
tbtbTt ,,. 10
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, > ’•
XY
XYmYXm
if(Y)
if{)](/[
•<X:=5, > [5/X]
Rules for commands
• <skip, >
•
• Sequencing:
• Conditionals:
]/[: ,
,
XmaX
na
'
'
,10
,0,
ccb
cb
elsethenif
true
Atom
ic
'
'
,10
,1,
ccb
cb
elsethenif
false
'
'''1''1
,10
,,
cc
cc
;
Rules for commands (while)
,
,
cb
b
dowhile
false
'
'''
,
,,
cb
cbb
dowhile
dowhile '' c, true
Example Program
Y := 1;
while (X=1) do
Y := Y * X;
X := X - 1
Equivalence of commands
c0 c1 iff
',',.', 10 cc
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 ’
Small Step Semantics for Additions
,101,10
,01,0
'
'
aaaa
aa
,11,1
,11,1
'
'
anan
aa
mnpwherepmn
,1,
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