170 likes | 259 Views
Sequence Control Syntax and Semantics. Jian Xu March 3, 2004 CS706, CAS McMaster. Imperative programming: describes computation in terms of program state and statements that change the state. Almost all hardware implementation is imperative.
E N D
Sequence Control Syntax and Semantics Jian Xu March 3, 2004 CS706, CAS McMaster
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
Unconditional branch • FORTRAN • GOTO 21 • ASSIGN 21 to K; GOTO K • GOTO (n1,n2, …,np), I • COBOL • GOTO L1, L2, …, LnDEPENDING ON , I. • Pascal • GOTO statement labels • Ada • GOTO statement • exit & exit LOOP-LABEL
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 • ifexprthen statements elsifexprthen statements … else statements end if;
Semantics – conditional branch • Operational • Denotational • Axiomatic
Semantics – conditional branch • Operational • Denotational • Axiomatic
Syntax - case • Pascal caseexpr of const: statement; … const: statement end • Ada caseexpr is when choice => statement; … when others => statement end
Semantics - case • Operational • Denotational • Axiomatic
Semantics - case • Operational • Denotational • Axiomatic
Syntax - loops • FORTRAN Do label index = init-val, final-val, incr-val • COBOL PERFORM L1 THRU Ln k TIMES PERFORM L1 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;
Semantics – while loop • Operational • Denotational • Axiomatic
Syntax - subprogram • FORTRAN FUNCTION fun-nam (formal-par-lst) • COBOL PERFORM L1 THRU Ln. • Parcal function fun-name (var-lst:type): result-type; procedure proc-name (var-lst:type; var 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
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.
Semantics -subprogram • Operational • Denotational • Axiomatic
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: C1 →C2 is monotonic if, x, y in C1, if x y, then F(x) F(y). • A function F: C1 →C2 is continuous if, for each chain x = x1,x2, … in C1, F(x) = F(xi). • <StateTrans, > is a cpo, where StateTrans is the set all state transformations f: State → State. • f1 f2 iff σf1 (σ) f2 (σ) and f1 (σ)=f2(σ) • If we understand function as set of mappings, then f1 f2 iff f1is a subset off2. • The bottom is the totally undefined function or empty set. • Thus, for a any chain f = f1,f2, … , f is simply the union f.
Semantics - subprogram • First we need to show F1, …, Fn are continuous with respect to f1, …, 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.
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.1,3.14, …), f(π)= (f(3),f(3.1),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.