Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming Languages Meeting 4 September 16/17, 2014.

Similar presentations


Presentation on theme: "Programming Languages Meeting 4 September 16/17, 2014."— Presentation transcript:

1 Programming Languages Meeting 4 September 16/17, 2014

2 Planning Ahead Short exam next time – Construct a grammar given a description of strings in the language – Parse a sentence in a grammar – Describe a language defined by a grammar

3 Short Exam (2) – Inferences from the grammar Precedence of operators Associativity of operators Ambiguity of sentences – Construct one of the various semantic domains in a specific situation

4 REF Results Declarations followed by 1. A := RRF + B; Ans: 4 2. B := RRE; Ans: 1 3. RC := RRF + RD; Ans: Type mismatch (see slide Semantics(6) from last week).

5 REF Results (2) 4. RRF : = RRE; Ans: Location of RC 5. RRE : = RD; Ans: Location of RD

6 Multiple Assignments Let’s now investigate statements of the form ref1,ref2,…,refm := exp1,exp2,…,expn What conditions should we put on m and n?

7 MA (2) m = 1, n = 1 The ordinary assignment statement A := 0; (ref1 is A and the location it is mapped to; exp1 has value 0)

8 MA (3) m > 1, n = 1 A,B,C := 0; should represent the sequence A := 0; B := 0; C := 0; or any of the other 5 arrangements of it. (Why 5?)

9 MA (4) m = 2, n = 2 A,B = 0,1; A,B = X,Y; A,B = B,A; If initially A:=9; B:=23; X:=7; Y:=12; what is the state after each of the statements above, accumulating the changes?

10 MA (5) More complexity: Suppose A has been declared to be an array of size 10 of integers, all initialized to 0. Also j has been declared to be an integer and currently has value 4. What is the result of executing A[j-1], j, A[j+1] := j+1; Work with your partner to find several plausible answers.

11 MA(6) Case 1: Evaluate exp to obtain a value v for i=1 to m step 1 evaluate ref i to obtain loc i assign v to loc i In our case j becomes 5 and A is [0,0,5,0,0,5,0,0,0,0]

12 MA (7) Case 2: Evaluate exp to obtain a value v for i=m to 1 step −1 evaluate ref i to obtain loc i assign v to loc i In our case j becomes 5 and A is [0,0,0,5,5,0,0,0,0,0]

13 MA (8) Case 3: for i=1 to m step 1 evaluate ref i to obtain loc i evaluate exp to obtain value v assign v to loc i In our case j becomes 5 and A is [0,0,5,0,0,6,0,0,0,0]

14 MA (9) Case 4: for i=m to 1 step −1 evaluate ref i to obtain loc i evaluate exp to obtain value v assign v to loc i In our case j becomes 5 and A is [0,0,0,6,5,0,0,0,0,0]

15 MA (10) Case 5: for i=1 to m step 1 evaluate ref i to obtain loc i evaluate exp to obtain value v for i=1 to m step 1 assign v to loc i In our case j becomes 5 and A is [0,0,5,0,5,0,0,0,0,0]

16 Control Structures Start with the three fundamental structures and assume the existence of an empty statement (NOP) Sequence S 1 ;S 2 If-then-else if P then S 1 else S 2 While-do while P do S

17 CS Semantics Use program functions, defined as follows Let P be a program (or program fragment) Let a be an identifier declared in P representing values Let V a be the set of legal values for a as determined by its type. Let V a * = V a + {undefined}

18 CS Semantics (2) Question: What are the possible outcomes after executing a program fragment? 1. 2. 3. 4. 5.

19 CS Semantics (3) The program function for P is [P]: V a * × V b * × … −> V a * × V b * × … + {error, nonterminating} defined to show the state after executing P.

20 Example 1 P = X := X+3; Y:=Y−1 where X,Y are type integer

21 Example 2 P = while Y > 0 do begin X := X−1; Y := Y−1 end where X,Y are type 0..maxint

22 Example 3 P = if X <= Y then X := Y – X else X := 0 where X,Y are type integer

23 Constructing a PF Given a program P 1.Find the set of identifiers: X, Y, Z, … 2.Find the set of values V X *, … associated with each identifier, which includes {undefined} 3.Construct the function [P] with domain: V X * × V Y * × … codomain: V X * × V Y * × … + {error, nonterminating}

24 Constructing (2) Use the following notational conventions: 1.If an identifier in P does not appear as the target of an assignment statement, it can be suppressed in the domain and codomain 2.[P] (error) = error [P] (nonterminating) = nonterminating so are not written

25 Constructing (3) 3.undefined is denoted by 4.The identifier and its value are denoted by the same letter 5.Account for all possible values of the domain, perhaps by partitioning with conditions, e.g. x<0, x≥0, x =

26 Example 4 Program Function Exercise II.1 P = while x <= b do x := x + a end

27 If-Then Semantics Let P = if C then S 1 else S 2 Define [P](v) = [S 1 ](v) if [C](v) = true [S 2 ](v) if [C](v) = false error if [C](v) = error

28 If-Then-Else (2) Theorem: [if C then S] = [if C then S else Φ] where [Φ] = id

29 While-Do Semantics Let P = while C do S Define [P](v) = [S] k (v) where nonterminating error

30 Sequence Semantics Let P = S 1 ; S 2 Define [P](v) = [S 2 ] o [S 1 ](v)

31 Böhm – Jacopini Theorem The simple assignment statement and the three control structures sequence, if-then-else, while- do are enough to write any block structured program to compute any computable function to convert any flowchart specified program to code

32 Additional Control Structures Useful for human understanding of programs Another example of “syntactic sugar” Definition: [repeat S until C] = [S ; while (not C) do S]

33 Additional (2) Let P = case F of F1:S1; F2:S2; … ; FN:SN end Definition [P] = [if F=F1 then S1 else if F=F2 then S2 else if … else if F=FN then SN] Issues: Two selector values with same statement What if F does not equal any FI? Can some SI be empty?

34 Additional (3) Let P = switch(E) {case E1:S1;case E2:S2; … ; case EN:SN; default: SD} Definition [P] = [ if E=E1 then S1;S2;…;SN;SD else if E=E2 then S2;…;SN;SD else if E=E3 then S3;…;SN;SD else SD]

35 Assignment Due at beginning of next class meeting. Work by yourself. Ask questions only of the instructor. 1.Program Function Exercise I.5 2.Program Function Exercise II.5 and under the assumptions of Section III 3.Program Function Exercise I.4 4.Program Function Exercise II.4


Download ppt "Programming Languages Meeting 4 September 16/17, 2014."

Similar presentations


Ads by Google