Programming Languages Meeting 4 September 2021 2016 Planning
Programming Languages Meeting 4 September 20/21, 2016
Planning Ahead • Short exam next time – Construct a grammar given a description of strings in the language – Parse a sentence in a grammar • Construct a parse tree for the sentence – Describe a language defined by a grammar
Short Exam (2) – Inferences from a grammar • Precedence of operators • Associativity of operators • Ambiguity of sentences – Construct one of the various semantic domains in a specific situation • Show a specific element of Env • Show a specific element of Store
REF Results Declarations followed by 1. A : = RRF + B; Ans: l. A -> 4 2. B : = RRE; Ans: l. B -> 1 3. RC : = RRF + RD; Ans: Type mismatch (see slide Semantics(6) from last week).
REF Results (2) 4. RRF : = RRE; Ans: l. RRF -> Location of RC 5. RRE : = RD; Ans: l. RRE -> Location of RD
Multiple Assignments Let’s now investigate statements of the form ref 1, ref 2, …, refm : = exp 1, exp 2, …, expn What conditions should we put on m and n?
MA (2) m = 1, n = 1 The ordinary assignment statement A : = 0; (ref 1 is A and the location it is mapped to; exp 1 has value 0)
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? )
MA (4) m = 2, n = 2 X, Y = 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? • What is the state after all three statements execute if the sequence of statements is reordered in each of the 5 other possibilities?
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.
MA (6) Case 1: Evaluate exp to obtain a value v for i=1 to m step 1 evaluate refi to obtain loci assign v to loci In our case j becomes 5 and A is [0, 0, 5, 0, 0, 0, 0]
MA (7) Case 2: Evaluate exp to obtain a value v for i=m to 1 step − 1 evaluate refi to obtain loci assign v to loci In our case j becomes 5 and A is [0, 0, 0, 5, 5, 0, 0, 0]
MA (8) Case 3: for i=1 to m step 1 evaluate refi to obtain loci evaluate exp to obtain value v assign v to loci In our case j becomes 5 and A is [0, 0, 5, 0, 0, 6, 0, 0]
MA (9) Case 4: for i=m to 1 step − 1 evaluate refi to obtain loci evaluate exp to obtain value v assign v to loci In our case j becomes 5 and A is [0, 0, 0, 6, 5, 0, 0, 0]
MA (10) Case 5: for i=1 to m step 1 evaluate refi to obtain loci evaluate exp to obtain value v for i=1 to m step 1 assign v to loci In our case j becomes 5 and A is [0, 0, 5, 0, 0, 0]
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 C then S 1 else S 2 • While-do while C do S
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 Va be the set of legal values for a as determined by its type. Let Va* = Va + {undefined}
CS Semantics (2) Question: What are the possible outcomes after executing a program fragment? 1. 2. 3. 4. 5.
CS Semantics (3) The program function for P is [P]: Va* × Vb* × … −> Va* × Vb* × … + {error, nonterminating} defined to show the state after executing P.
Example 1 P = X : = X+3; Y: =Y− 1 where X, Y are type integer
Example 2 P = while Y > 0 do begin X : = X− 1; Y : = Y− 1 end where X, Y are type 0. . maxint
Example 3 P = if X <= Y then X : = Y – X else X : = 0 where X, Y are type integer
Constructing a PF Given a program P 1. Find the set of identifiers: X, Y, Z, … 2. Find the set of values VX* , … associated with each identifier, which includes {undefined} 3. Construct the function [P] with domain: VX* × VY* × … codomain: VX* × VY* × … + {error, nonterminating}
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
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 =
Example 4 Program Function Exercise II. 1 P = while x <= b do x : = x + a end
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
If-Then-Else (2) Theorem: [if C then S] = [if C then S else Φ] where [Φ] = id
While-Do Semantics Let P = while C do S Define [P](v) = [S]k(v) where nonterminating error
Sequence Semantics Let P = S 1 ; S 2 Define [P](v) = [S 2] o [S 1](v)
Böhm – Jacopini Theorem The simple assignment statement and the three control structures sequence, if-then-else, whiledo are enough • to write any block structured program • to compute any computable function • to convert any flowchart specified program to code
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]
Additional (2) Let P = case F of F 1: S 1; F 2: S 2; … ; FN: SN end Definition [P] = [if F=F 1 then S 1 else if F=F 2 then S 2 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?
Additional (3) Let P = switch(E) {case E 1: S 1; case E 2: S 2; … ; case EN: SN; default: SD} Definition [P] = [ if E=E 1 then S 1; S 2; …; SN; SD else if E=E 2 then S 2; …; SN; SD else if E=E 3 then S 3; …; SN; SD else SD]
Project 1 Dates
Overview • Investigate extracting information, specifically dates, from a text file and processing it. • Describe the syntax of each of the many forms for expressing a date in an application or in written text. • Develop a program that finds all the dates in a text file. • Develop a program that allows computation with dates: days between, day of the week, date of special days, etc.
Structure and Approach • Done in teams of 3, except for one team of 2. • Comes in several parts – Part 0: Due at end of class today – Part 1: Due at beginning of class, September 27/28 – Part 2: Due at beginning of class, October 18/19
Part 0 • Divide yourselves into teams of 3. Report the members of your team. – Team Kremmling – Team Leadville – Team Montrose – Team Nederland – Team Ouray
Part 1 A problem of constructing grammars for various situations, specifically: • Define a grammar or grammars to describe the format of a date as it might appear in a text file. There at least 12 cases, and maybe more. • For our purposes assume that a date consists of a day, a month, and a year
Part 1 - Approach • Search your computer and external systems for various representations of a date and develop a description of each representation in EBNF.
Assumptions • A date must contain day, month, and year. It is not valid if any of the three parts is missing. • A date may not contain any other components than day, month, and year, with the exception of field separators.
Clarifications
- Slides: 42