More Related Content
Similar to 20DCE096_prac8.pdf
Similar to 20DCE096_prac8.pdf (20)
More from ShivangPithadiya1
More from ShivangPithadiya1 (9)
20DCE096_prac8.pdf
- 1. 20DCE096 CE442: DESIGN OF LANGUAGE PROCESSOR 19
PRACTICAL - 8
Aim: Implementation of Syntax Tree.
Code:
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp;
int i = 0, k, l, row = 0, col = 0, s, x;
char a[10][10], ch, main[50], search;
fp = fopen("syntax.txt", "r");
if (fp == NULL) {
printf("Failed to open the file.n");
return 1;
}
while (fgets(a[row], sizeof(a[0]), fp) != NULL) {
row++;
col = strlen(a[row - 1]);
if (col > 0 && a[row - 1][col - 1] == 'n') {
a[row - 1][col - 1] = '0';
col--;
}
}
fclose(fp);
printf("n");
for (k = 0; k < row; k++) {
printf("%sn", a[k]);
}
printf("n");
for (k = 0; k < row; k++) {
i = 0;
s = 0;
main[i] = a[k][1];
i++;
if (a[k][3] == 't') {
search = a[k][4];
for (l = 0; l < i; l++) {
if (main[l] == search) {
- 2. 20DCE096 CE442: DESIGN OF LANGUAGE PROCESSOR 20
main[i] = main[l];
i++;
break;
}
}
main[i] = a[k][5];
s = 5;
i++;
} else {
main[i] = a[k][3];
i++;
main[i] = a[k][4];
s = 4;
i++;
}
s++;
if (a[k][s] == 't') {
s++;
search = a[k][s];
for (l = 0; l < i; l++) {
if (main[l] == search) {
main[i] = main[l];
i++;
break;
}
}
} else {
main[i] = a[k][s];
i++;
}
for (x = i - 1; x >= 0; x = x - 4) {
printf("t%c: root->%c ", main[x - 3], main[x - 1]);
if (main[x - 2] >= '0' && main[x - 2] <= '9')
printf("lc->t%c ", main[x - 2]);
else
printf("lc->%c ", main[x - 2]);
if (main[x] >= '0' && main[x] <= '9')
printf("rc->t%cn", main[x]);
else
printf("rc->%cn", main[x]);
}
}
return 0;
}
- 3. 20DCE096 CE442: DESIGN OF LANGUAGE PROCESSOR 21
Output:
Conclusion: In this practical we implement syntax tree.
Grade:
Signature:
Remarks: