Lab #9 Solution

$35.00 $29.00

Objective: To augment the mini compiler design with the translation to intermediate code and type checking capabilities In previous lab, you have designed and implemented a mini compiler consisting lexer, parser, and semantic analyzer, to deal with variable declarations in a block structured language. You need to augment the same with translation capabilities. The task…

Rate this product

You’ll get a: zip file solution

 

Categorys:
Tags:

Description

Rate this product

Objective: To augment the mini compiler design with the translation to intermediate code and type checking capabilities

In previous lab, you have designed and implemented a mini compiler consisting lexer, parser, and semantic analyzer, to deal with variable declarations in a block structured language. You need to augment the same with translation capabilities. The task is restricted to

  • translation of arithmetic expressions declared in a block to the equivalent three address code,

  • generating error if a variable is not declared, and

  • preforming typechecking.

Input : Blocks of C variable declarations and statements containing arithmetic expressions

Output: three address code and errors if any

Execusion: $./minicc prog.c

1. Testcase:

Input:

{

i n t x1 , x2 , y1 , y2 , d i s t ;

f l o a t m1 , m2 , m3 , t o t a l , x , y ;

d i s t = ( x1 − x2 ) ( x1 − x2 ) + ( y1 − y2 ) ( y1 − y2 ) ;

t o t a l = m1 m2 m3 ;

x = y + 5 ;

}

Output:

    • 0=x1−x2

    • 1=x1−x2

    • 2=t 0 t 1

    • 3=y1−y2

    • 4=y1−y2

    • 5=t 3 t 4

    • 6=t 2+t 5 d i s t=t 6

    • 7=m1m2

    • 8=t 7m3

    • o t a l=t 8

    • 9=y+ ( f l o a t ) 5 x=t 9

  1. Testcase:

Input:

{

i n t a ;

{

i n t b , c ;

a = b + c ;

x = a + b ;

}

}

Output:

t 0 = b + c

a = t 0

e r r o r : v a r ’ a ’ i s no t d e c l a r e d i n t h e s c o p e

Lab #9 Solution
$35.00 $29.00