Sequence Control Syntax and Semantics Jian Xu March

















- Slides: 17

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 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 – 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 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 6

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 9

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

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 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

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 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 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