Construct a intermediate representation of source program

Assignment Help Computer Engineering
Reference no: EM132210204

Write a program in Java:

Parser Generator: In this project option, you are going to implement lexical/syntax analysis using Stack.

Syntax-Directed Translations

The front end of the compiler constructs a intermediate representation of the source program from which the back end generates the target program. A syntax directed translation scheme is a syntax directed definition in which the net effect of semantic actions is to print out a translation of the input to a desired output form.

Stack

Stack is a LIFO (last in first out) storage with two abstract operations : push, pop. Push will put an item into stack at the top. Pop retrieve an item at the top of stack.

Calculations using stack

Because a stack is LIFO, any operation must access data item from the top. Stack doesn't need 'addressing' as it is implicit in the operators which use stack. Any expression can be transformed into a postfix order and stack can be use to evaluate that expression without the need for explicitly locate any variable. For example:

B + C - D ==>

B C + D - (post fix)

Intermediate Code:

push rvalue B

push rvalue C

add

push rvalue D

sub

Instruction set of stack

1. Instructions fall into three category:

a. Integer arithmetic: add, mul, div ...

b. Stack manipulation:

b.i. Push v: push v onto stack

b.ii. push lvalue L: push address of data location L

b.iii. push rvalue L: push contents of data location L

b.iv. pop: throw away the value on stack top

b.v. := : the rvalue on the top is placed in the lvalue below it and both are popped.

b.vi. copy: push a copy of top value on the stack.

c. Control flow:

c.i. label L: taget of jump to L

c.ii. goto L: nect instruction is taken from statement with label L

c.iii. gofalse L: pop the top value ; jump if it is 0.

c.iv. gotrue L: pop the top value ; jump if it is non zero.

c.v. halt: stop execution

Steps to be followed while working on this project

1. Lexical specification:

To do lexical analysis of a C-routine. The scanner must be able to process contructs like expressions, assignment statements, if statement, if-else-if nesting and while loop. Ensure handling multiple files for scanning.

2. Yacc specification:

Syntax analysis of the above construct. The code can be assumed to be semantically correct, so no semantic checks using yacc action need to be done.

3. Translation:

a. Expression:

a.i. expr -> expr1 ‘op' expr2 { expr.t := expr1.t || expr2.t || op }

a.ii. expr-> id { expr.t := id.lexeme } Attribute lexeme of an id gives its string representation. Attribute t of a non terminal gives its translation. || is the concatenation operator.

b. Assignment: b.i. stmt -> id := expr {stmt.t := ‘push lvalue ' id.lexeme || expr.t || ‘:='}

c. If statement: c.i. stmt -> if expr then stmt1 {out := newlabel(); stmt.t := expr.t || ‘gofalse ' out || stmt1.t || ‘label ' out }

d. While statement: d.i. stmt -> while expr then stmt1 {test = newlabel(); out = newlabel(); ‘label ' test || expr.t || ‘gofalse ' out || stmt1.t || ‘goto ' test || ‘label ' out }

Input guidelines

1. Input is a C-routine.

2. Ignore function calls.

3. The input must be completely realized by the above four translations (for example the binary search routine) Example Input:

int n = 10;

int u = 0 ;

int v = 1 ;

int t ;

int i = 2;

while(i <= n ) { t = u + v; u = v; v = t; }

Output: push lvalue n

push 10

:=

push lvalue u

push 0

:=

push lvalue v

push 1

:=

push lvalue i

push 2

:=

label test

push rvalue i

push rvalue n

<=

gofalse out

push lvalue t

push rvalue u

push rvalue v

+ :=

push lvalue u

push rvalue v

:=

push lvalue v

push rvalue t

:=

goto test

label out

halt

Reference no: EM132210204

Questions Cloud

Describe how perception of product differs within cultures : Describe how the perception of the product differs within cultures both within the United States and globally.
Create an image object from that array : Create a utility Object - similar to Math - called "pictureEdit" that contains methods for working with and manipulating images.
Discuss the space and time efficiencies of the stack-based : Discuss the structure, behavior, and practical uses of the two data structures (grid and stack) used in our maze solving program.
Discuss the four functions of inventory : Discuss the four functions of inventory. Discuss six types of inventory.
Construct a intermediate representation of source program : The front end of the compiler constructs a intermediate representation of the source program from which the back end generates the target program.
Platinum inventory management and expenditure process : Identification of: internal control weaknesses relating to Platinum’s inventory management and expenditure process;
Determine the deviation of each value from the average : Write a program to input the following integer numbers in an array named grades: 89, 95, 72, 83, 99, 54, 86, 75, 92, 73, 79, 75, 82, and 73.
Write a program to implement the 56-bit des algorithm : Write a program to implement the 56-bit DES algorithm (in ECB mode). Use your program with your chosen key to encrypt a message of 80 bytes.
How do values differ from attitudes : How do values differ from attitudes? Name some personal values that are related to purchasing decisions.

Reviews

Write a Review

Computer Engineering Questions & Answers

  Mathematics in computing

Binary search tree, and postorder and preorder traversal Determine the shortest path in Graph

  Ict governance

ICT is defined as the term of Information and communication technologies, it is diverse set of technical tools and resources used by the government agencies to communicate and produce, circulate, store, and manage all information.

  Implementation of memory management

Assignment covers the following eight topics and explore the implementation of memory management, processes and threads.

  Realize business and organizational data storage

Realize business and organizational data storage and fast access times are much more important than they have ever been. Compare and contrast magnetic tapes, magnetic disks, optical discs

  What is the protocol overhead

What are the advantages of using a compiled language over an interpreted one? Under what circumstances would you select to use an interpreted language?

  Implementation of memory management

Paper describes about memory management. How memory is used in executing programs and its critical support for applications.

  Define open and closed loop control systems

Define open and closed loop cotrol systems.Explain difference between time varying and time invariant control system wth suitable example.

  Prepare a proposal to deploy windows server

Prepare a proposal to deploy Windows Server onto an existing network based on the provided scenario.

  Security policy document project

Analyze security requirements and develop a security policy

  Write a procedure that produces independent stack objects

Write a procedure (make-stack) that produces independent stack objects, using a message-passing style, e.g.

  Define a suitable functional unit

Define a suitable functional unit for a comparative study between two different types of paint.

  Calculate yield to maturity and bond prices

Calculate yield to maturity (YTM) and bond prices

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd