Give a CFGcontext free language that will work for the proce
Give a CFG(context free language) that will work for the procedures below and any other procedures that has the same kind of instructions.
PROCEDURE multiply a, b;
VAR a, b, z;
BEGIN
z := 0;
WHILE b > 0 DO BEGIN
z := a + z;
b := b - 1;
END
RETURN z;
END;
PROCEDURE odd x;
VAR x;
BEGIN
WHILE x > 1 DO x := x / 2;
IF x = 1 THEN
RETURN 1;
ELSE
RETURN 0;
END;
Give a CFG(context free language) that will work for the procedures below and any other procedures that has the same kind of instructions.
PROCEDURE multiply a, b;
VAR a, b, z;
BEGIN
z := 0;
WHILE b > 0 DO BEGIN
z := a + z;
b := b - 1;
END
RETURN z;
END;
PROCEDURE odd x;
VAR x;
BEGIN
WHILE x > 1 DO x := x / 2;
IF x = 1 THEN
RETURN 1;
ELSE
RETURN 0;
END;
PROCEDURE multiply a, b;
VAR a, b, z;
BEGIN
z := 0;
WHILE b > 0 DO BEGIN
z := a + z;
b := b - 1;
END
RETURN z;
END;
PROCEDURE odd x;
VAR x;
BEGIN
WHILE x > 1 DO x := x / 2;
IF x = 1 THEN
RETURN 1;
ELSE
RETURN 0;
END;
PROCEDURE multiply a, b;
VAR a, b, z;
BEGIN
z := 0;
WHILE b > 0 DO BEGIN
z := a + z;
b := b - 1;
END
RETURN z;
END;
PROCEDURE odd x;
VAR x;
BEGIN
WHILE x > 1 DO x := x / 2;
IF x = 1 THEN
RETURN 1;
ELSE
RETURN 0;
END;
Solution
Z->A*B | B //for multiplying A and B
B->E | a //where a is a string
2) S->X/2 | 1 //to find odd number
X->0 | 1

