Sequence Control Syntax and Semantics Jian Xu March

  • Slides: 17
Download presentation
Sequence Control Syntax and Semantics Jian Xu March 3, 2004 CS 706, CAS Mc.

Sequence Control Syntax and Semantics Jian Xu March 3, 2004 CS 706, CAS Mc. Master

Imperative programming: describes computation in terms of program state and statements that change the

Imperative programming: describes computation in terms of program state and statements that change the state. • Almost all hardware implementation is imperative. • The program state is the contents of memory, and the statements are instructions. • Higher-level imperative languages use variables and more complex statements. • Support assignment, looping, conditional branching, and unconditional branching. • FORTRAN, COBOL, Pascal, Ada 2

Unconditional branch • FORTRAN – GOTO 21 – ASSIGN 21 to K; GOTO K

Unconditional branch • FORTRAN – GOTO 21 – ASSIGN 21 to K; GOTO K – GOTO (n 1, n 2, …, np), I • COBOL – GOTO L 1, L 2, …, Ln DEPENDING ON , I. • Pascal – GOTO statement labels • Ada – GOTO statement – exit & exit LOOP-LABEL 3

Syntax - Conditional branch • FORTRAN – IF expr nneg, nzero, npos. – IF

Syntax - Conditional branch • FORTRAN – IF expr nneg, nzero, npos. – IF expr statement. – IF expr THEN statements ELSE IF expr THEN statements … ELSE statements END IF • COBOL – IF expr statements ELSE statements • Pascal – if expr then statement. • Ada – if expr then statements elsif expr then statements … else statements end if; 4

Semantics – conditional branch • Operational • Denotational • Axiomatic 5

Semantics – conditional branch • Operational • Denotational • Axiomatic 5

Semantics – conditional branch • Operational • Denotational • Axiomatic 6

Semantics – conditional branch • Operational • Denotational • Axiomatic 6

Syntax - case • Pascal case expr of const: statement; … const: statement end

Syntax - case • Pascal case expr of const: statement; … const: statement end • Ada case expr is when choice => statement; … when others => statement end 7

Semantics - case • Operational • Denotational • Axiomatic 8

Semantics - case • Operational • Denotational • Axiomatic 8

Semantics - case • Operational • Denotational • Axiomatic 9

Semantics - case • Operational • Denotational • Axiomatic 9

Syntax - loops • FORTRAN Do label index = init-val, final-val, incr-val • COBOL

Syntax - loops • FORTRAN Do label index = init-val, final-val, incr-val • COBOL PERFORM L 1 THRU Ln k TIMES PERFORM L 1 THRU Ln UNTIL <condition>. • Parcal for index : = init-val to final-val do statement while expr do statement repeat statement until expr • Ada loop statements end loop; for index in range loop statement end loop; while expr loop statement end loop; 10

Semantics – while loop • Operational • Denotational • Axiomatic 11

Semantics – while loop • Operational • Denotational • Axiomatic 11

Syntax - subprogram • FORTRAN FUNCTION fun-nam (formal-par-lst) • COBOL PERFORM L 1 THRU

Syntax - subprogram • FORTRAN FUNCTION fun-nam (formal-par-lst) • COBOL PERFORM L 1 THRU Ln. • Parcal function fun-name (var-lst: type): result-type; procedure proc-name (var-lst: type; var-lst: type); • Ada function fun-name (var-lst: in type): result-type is procedure proc-name (var-lst: in type; var-lst: out type; var-lst: in out type is 12

Semantics - subprogram • Only 4 kinds of statement, namely assignment, sequential, conditional, and

Semantics - subprogram • Only 4 kinds of statement, namely assignment, sequential, conditional, and procedure call. • All procedures are declared globally before use, formally, • Procedure call do not allow argument passing mechanism. • Recursive calls as well as mutual recursive calls are allowed. 13

Semantics -subprogram • Operational • Denotational • Axiomatic 14

Semantics -subprogram • Operational • Denotational • Axiomatic 14

Concepts recall • cpo is a partially ordered set satisfying (1) each chain has

Concepts recall • cpo is a partially ordered set satisfying (1) each chain has a least upper bound, (2) it has a bottom element. • A function F: C 1 → C 2 is monotonic if, x, y in C 1, if x y, then F(x) F(y). • A function F: C 1 → C 2 is continuous if, for each chain x = x 1, x 2, … in C 1, F( x) = F(xi). • <State. Trans, > is a cpo, where State. Trans is the set all state transformations f: State → State. • f 1 f 2 iff σ f 1 (σ) f 2 (σ) and f 1 (σ)=f 2(σ) • If we understand function as set of mappings, then f 1 f 2 iff f 1 is a subset of f 2. • The bottom is the totally undefined function or empty set. • Thus, for a any chain f = f 1, f 2, … , f is simply the union f. 15

Semantics - subprogram • First we need to show F 1, …, Fn are

Semantics - subprogram • First we need to show F 1, …, Fn are continuous with respect to f 1, …, fn. This can be done by structure induction on statement S. • Then we can define the least fix points as follows by generalized Tarski’s Theorem. • We can prove the equivalence of these semantics by induction on the approximation steps k. 16

Remark - continuity • If function f is continuous, we can approximate the function

Remark - continuity • If function f is continuous, we can approximate the function value of a least upper bound of a chain by the function values of all components of the chain. Say, π= (3, 3. 14, …), f(π)= (f(3), f(3. 14), …). • In λ calculus, we each expression denotes a function which can apply to any other. This imply that we need a so call reflexive domain, in the sense that the domain is isomorphic to its function space. The domain of continuous functions turns out to be a choice. 17