370 likes | 646 Vues
Programming Language Semantics . Mooly Sagiv Eran Yahav msagiv@post yahave@post Schrirber 317 Open space 03-640-7606 03-640-5358 html://www.cs.tau.ac.il/~msagiv/courses/sem03.html Textbook:Winskel The Formal Semantics of Programming Languages
E N D
Programming Language Semantics Mooly Sagiv Eran Yahav msagiv@post yahave@post Schrirber 317 Open space 03-640-7606 03-640-5358 html://www.cs.tau.ac.il/~msagiv/courses/sem03.html Textbook:Winskel The Formal Semantics of Programming Languages CS 0368-4348-01@listserv.tau.ac.il
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 c0elsec1| 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 • Arule 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, > ’ • <X:=5, > [5/X]
Rules for commands Atomic • <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