Programming Languages

Assignment 2

  1. Consider the following code written in a language with nested subroutines:

 

procedure main()

a : integer

 

procedure B(a : integer)

x : integer

 

procedure A(n : integer)

a := n

 

procedure R(m : integer)

write_integer(x)

x = x – 2

if x > 1

R(m + 1)

else

A(m)

 

–– body of B

x := a × a

R(1)

 

–– body of main

B(2)

write_integer(a)

 

  1. What does this program print assuming static scope, respectively dynamic scope? Explain your answer.
  2. Show the frames on the stack when procedure A has just been called. For each frame, show the values of the local variables and the static links.

 

  1. Consider the following pseudocode with nested subroutines:

 

  1. procedure main()
  2. a : integer := 1
  3. b : integer := 2
  4. c : integer := 3

 

  1. procedure first()
  2. a : integer := c
  3. c : integer := b

 

  1. procedure second()
  2. c : integer := 4

 

  1. –-body of second
  2. print a, b, c

 

  1. b : integer := 5

 

  1. –body of first
  2. second()
  3. print a, b, c

 

  1. –body of main
  2. first()
  3. print a, b, c

 

What does the program print (or will the compiler identify static semantic errors) if we assume that:

 

  1. names must be declared before use, and the scope of a name extends from its declaration through the end of the block?
  2. names must be declared before use, but the scope of a name is the entire block in which it is declared?

 

  1. Consider the following program written in generic pseudocode:

int x = 1;
int a[3] = { 2, 5, 3 };

void foo(int u, int v) {
v = a[x];
v = u * 9;
x = 2;
a[2] = u;
u = u – 2;
print u;
print v;
print x;
}
int main() {
foo(a[x], a[2]);
print x;
print a[0];
print a[1];
print a[2];
}

 

What is the output printed when this program is executed using call by value-result, respectively, call by macro expansion? Explain what happens in each case.

Calculate your order
Pages (275 words)
Standard price: $0.00
Client Reviews
4.9
Sitejabber
4.6
Trustpilot
4.8
Our Guarantees
100% Confidentiality
Information about customers is confidential and never disclosed to third parties.
Original Writing
We complete all papers from scratch. You can get a plagiarism report.
Timely Delivery
No missed deadlines – 97% of assignments are completed in time.
Money Back
If you're confident that a writer didn't follow your order details, ask for a refund.

Calculate the price of your order

You will get a personal manager and a discount.
We'll send you the first draft for approval by at
Total price:
$0.00
Power up Your Academic Success with the
Team of Professionals. We’ve Got Your Back.
Power up Your Study Success with Experts We’ve Got Your Back.