0% found this document useful (0 votes)
91 views3 pages

Three Address Code Generation

The document describes an algorithm to generate three address code for a given expression in C. It reads the expression from a file, calculates the number of tokens, compares each token to an operator, and concatenates the previous and next tokens to a temporary value while printing the three address code. It then replaces the left operand with the final temporary value. The program implements this algorithm by reading the input expression from a file, generating unique temporary variables for each operation, and writing the three address code to an output file. It takes an example input of "out = in1 + in2 + in3 - in4" and generates the corresponding three address code output.

Uploaded by

ksai.mb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
91 views3 pages

Three Address Code Generation

The document describes an algorithm to generate three address code for a given expression in C. It reads the expression from a file, calculates the number of tokens, compares each token to an operator, and concatenates the previous and next tokens to a temporary value while printing the three address code. It then replaces the left operand with the final temporary value. The program implements this algorithm by reading the input expression from a file, generating unique temporary variables for each operation, and writing the three address code to an output file. It takes an example input of "out = in1 + in2 + in3 - in4" and generates the corresponding three address code output.

Uploaded by

ksai.mb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

AIM :

            To write a C program to generate a three address code for a given expression.
ALGORITHM:

Step1: Begin the program


Step2 : The expression is read from the file using a file pointer
Step3 : Each string is read and the total no. of strings in the file is calculated.
Step4: Each string is compared with an operator; if any operator is seen then the
previous string and next string are concatenated and stored in a first temporary value
and the three address code expression is printed
Step5 : Suppose if another operand is seen then the first temporary value is
concatenated to the next string using the operator and the expression is printed.
Step6 : The final temporary value is replaced to the left operand value.
Step7 : End the program.

PROGRAM:  //program for three address code generation


#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<string.h>

struct three

char data[10],temp[7];

}s[30];

void main()

char d1[7],d2[7]="t";

int i=0,j=1,len=0;

FILE *f1,*f2;

clrscr();

f1=fopen("sum.txt","r");

f2=fopen("out.txt","w");

1
while(fscanf(f1,"%s",s[len].data)!=EOF)

len++;

itoa(j,d1,7);

strcat(d2,d1);

strcpy(s[j].temp,d2);

strcpy(d1,"");

strcpy(d2,"t");

if(!strcmp(s[3].data,"+"))

fprintf(f2,"%s=%s+%s",s[j].temp,s[i+2].data,s[i+4].data);

j++;

else if(!strcmp(s[3].data,"-"))

fprintf(f2,"%s=%s-%s",s[j].temp,s[i+2].data,s[i+4].data);

j++;

for(i=4;i<len-2;i+=2)

itoa(j,d1,7);

strcat(d2,d1);

strcpy(s[j].temp,d2);

if(!strcmp(s[i+1].data,"+"))

fprintf(f2,"\n%s=%s+%s",s[j].temp,s[j-1].temp,s[i+2].data);

else if(!strcmp(s[i+1].data,"-"))

fprintf(f2,"\n%s=%s-%s",s[j].temp,s[j-1].temp,s[i+2].data);

2
strcpy(d1,"");

strcpy(d2,"t");

j++;

fprintf(f2,"\n%s=%s",s[0].data,s[j-1].temp);

fclose(f1);

fclose(f2);

getch();

Input:  sum.txt

out = in1 + in2 + in3 - in4

Output  :       out.txt

t1=in1+in2
t2=t1+in3
t3=t2-in4
out=t3

RESULT:
            Thus a C program to generate a three address code for a given
expression is written, executed and the output is verified.

You might also like