1 / 22

The Syntax of L

The Syntax of L. We will now develop a precise mathematical description of the programming language L . The symbols X 1 , X 2 , X 3 , … are called input variables, Z 1 , Z 2 , Z 3 , … are called local variables , and Y is called the output variable of L. The Syntax of L.

meira
Télécharger la présentation

The Syntax of L

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Syntax of L • We will now develop a precise mathematical description of the programming language L. • The symbols • X1, X2, X3, … • are called input variables, • Z1, Z2, Z3, … • are called local variables, • and Y is called the output variable of L. Theory of Computation Lecture 3: Programs and Computable Functions II

  2. The Syntax of L • The symbols • A1, B1, C1, D1, E1,A2, B2, C2, … • are called labels of L. • For variables and labels, the subscript 1 can always be omitted. Theory of Computation Lecture 3: Programs and Computable Functions II

  3. The Syntax of L • A statement is one of the following: • V  V+1 • V  V-1 • V  V • IF V0 GOTO L • Here, V may be any variable and L may be any label. • Note that the statement V  V leaves all values unchanged, so it is a “dummy” command. • We will later see why it is useful to have V  V in our set of statements. Theory of Computation Lecture 3: Programs and Computable Functions II

  4. The Syntax of L • An instruction is either • a statement (unlabeled instruction) or • [L] followed by a statement (instruction labeled L) • A program is a list (i.e., a finite sequence) of instructions. • The length of this list is called the length of the program. • We also include the empty program – the program of length 0 – in the set of all programs. Theory of Computation Lecture 3: Programs and Computable Functions II

  5. The Syntax of L • While a program is being executed, its variables assume different numerical values. • This motivates the concept of the state of a program: • A state of a program P is a list of equations of the form • V = m, • where V is a variable and m is a number, • including exactly one equation for each variable that occurs in P (and possibly equations for other variables). Theory of Computation Lecture 3: Programs and Computable Functions II

  6. The Syntax of L Is the list X = 4, Y = 3, Z = 3a state of P ? • Consider the following program P : • [A] IF X0 GOTO B • Z  Z+1 • IF Z0 GOTO E • [B] X  X-1 • Y  Y+1 • Z  Z+1 • IF Z0 GOTO A Yes. How about X1 = 4, X2 = 5, Y = 4, Z = 4? Yes. And X = 3, Z = 3? No. Theory of Computation Lecture 3: Programs and Computable Functions II

  7. The Syntax of L • Let  be a state of P and let V be a variable that occurs in . • The value of V at  is then the unique number q such that the equation V = q is one of the equations in . • For example, the value of X at the stateX = 4, Y = 3, Z = 3 • is 4. Theory of Computation Lecture 3: Programs and Computable Functions II

  8. The Syntax of L • Consider a machine that can execute programs of L. • During program execution, this machine needs to store the state of a program, i.e., keep track of the values of variables. • Is there anything else that needs to be stored? • Yes, we also need to store which instruction is to be executed next. Theory of Computation Lecture 3: Programs and Computable Functions II

  9. The Syntax of L • Therefore, we define a snapshot or instantaneous description of a program P of length n to be a pair (i, ) where 1  i  (n + 1), and  is a state of P. • The number i indicates the number of the instruction that is to be executed next. • i = n + 1 corresponds to a “stop” instruction. • A snapshot (i, ) of a program P of length n is called terminal if i = n + 1. • If s = (i, ) is a snapshot of P and V is a variable of P , then the value of V at s just means the value of V at . Theory of Computation Lecture 3: Programs and Computable Functions II

  10. The Syntax of L • If (i, ) is a nonterminal snapshot of P , we define the successor of (i, ) to be the snapshot (j, ) defined as follows: • Case 1: • The i-th instruction of P is V  V+1 and  contains the equation V = m. • Then j = i + 1 and  is obtained from  by replacing the equation V = m by V = m + 1(the value of V at  is m + 1). Theory of Computation Lecture 3: Programs and Computable Functions II

  11. The Syntax of L • Case 2: • The i-th instruction of P is V  V-1 and  contains the equation V = m. • Then j = i + 1 and  is obtained from  by replacing the equation V = m by V = m – 1 if m  0. • If m = 0, then  = . • Case 3: • The i-th instruction of P is V  V. • Then j = i + 1 and  = . Theory of Computation Lecture 3: Programs and Computable Functions II

  12. The Syntax of L • Case 4: • The i-th instruction of P is IF V0 GOTO L. • Then  =  and there are two subcases: • Case 4a: •  contains the equation V = 0. • Then j = i + 1. • Case 4b: •  contains the equation V = m where m  0. • Then, if there is an instruction of P labeled L, j is the least number such that the j-th instruction of P is labeled L. Otherwise, j = n + 1. Theory of Computation Lecture 3: Programs and Computable Functions II

  13. The Syntax of L • A computation of a program P is defined to be a sequence s1, s2, …, sk of snapshots of P such that si+1 is the successor of si for i = 1, 2, …, k – 1 and sk is terminal. Theory of Computation Lecture 3: Programs and Computable Functions II

  14. Computable Functions • What does it exactly mean when we say that a program computes a function? • We would like to find a precise definition for this. • Let P be any program in the language L and let r1, …, rm be m given numbers. • We form the state  of P which consists of the equations • X1 = r1, X2 = r2, …, Xm = rm, Y = 0together with the equations V = 0 for all other variables V in P. • We call this the initial state. Theory of Computation Lecture 3: Programs and Computable Functions II

  15. Computable Functions • Moreover, we call the snapshot (1, ) the initial snapshot. • When running the program, there are two possible outcomes: • Case 1: • There is a computation s1, s2, …, sk of P beginning with the initial snapshot. • Then we write P(m)(r1, r2, …, rm) for the value of the variable Y at the terminal snapshot sk. Theory of Computation Lecture 3: Programs and Computable Functions II

  16. Computable Functions • Case 2: • There is no such computation; i.e., there is an infinite sequence s1, s2, s3, …beginning with the initial snapshot. • In this case, P(m)(r1, r2, …, rm) is undefined. Theory of Computation Lecture 3: Programs and Computable Functions II

  17. Sample Computation [A] IF X0 GOTO B (1) Z  Z+1 (2) IF Z0 GOTO E (3) [B] X  X-1 (4) Y  Y+1 (5) Z  Z+1 (6) IF Z0 GOTO A (7) • (1, {X = r, Y = 0, Z = 0}), • (4, {X = r, Y = 0, Z = 0}), • (5, {X = r - 1, Y = 0, Z = 0}), • (6, {X = r - 1, Y = 1, Z = 0}), • (7, {X = r - 1, Y = 1, Z = 1}), • (1, {X = r - 1, Y = 1, Z = 1}), • . • . • (1, {X = 0, Y = r, Z = r}), • (2, {X = 0, Y = r, Z = r}), • (3, {X = 0, Y = r, Z = r + 1}), • (8, {X = 0, Y = r, Z = r + 1}). We write: P(1)(r) = r. Theory of Computation Lecture 3: Programs and Computable Functions II

  18. Computation • For any program P and any positive integer m, the function P(m)(r1, r2, …, rm) is said to be computed by P. • We allow any program to be run with any number of inputs. • Consider the summation program from the previous lecture: • P(2)(r1, r2) = r1 + r2 • P(1)(r1) = r1 + 0 = r1 • P(3)(r1, r2 ,r3) = r1 + r2 Theory of Computation Lecture 3: Programs and Computable Functions II

  19. Computation • For any program P and any positive integer m, the function P(m)(r1, r2, …, rm) is said to be computed by P. • In general, a partial function f on a set Sm is a function whose domain is a subset of Sm. • If a partial function on Sm has the domain Sm, then it is called total. Theory of Computation Lecture 3: Programs and Computable Functions II

  20. Computation • A given partial function g (of one or more variables) is said to be partially computable if it is computed by some program. • This is the case if there is a program P such that • g(r1, r2, …, rm) = P(m)(r1, r2, …, rm) for all r1, r2, …, rm. • This means not only that both sides have the same value when they are defined, but also that when either side of the equation is undefined, the other one is as well. • A function is said to be computable if it is both partially computable and total. Theory of Computation Lecture 3: Programs and Computable Functions II

  21. Macros • So far we have used macros in an informal way. Let us now develop a more precise definition of them. • Let f(x1, x2, …, xn) be a partially computable function, and P be a program that computes f. • Let us assume that • the variables in P are named Y, X1, …, Xn, Z1, …, Zk, • the labels in P are named E, A1, …, Al, and • for each instruction of P of the form IF V0 GOTO Ai there is in P an instruction labeled Ai . Theory of Computation Lecture 3: Programs and Computable Functions II

  22. Macros • We can modify any program of the language L to comply with these assumptions. • We write: • P = P (Y, X1, …, Xn, Z1, …, Zk; E, A1, …, Al) • In particular, we will use: • Qm = P (Zm, Zm+1, …, Zm+n, Zm+n+1, …, Zm+n+k; Em, Am+1, …, Am+l) • for a given value m. Theory of Computation Lecture 3: Programs and Computable Functions II

More Related