-
Notifications
You must be signed in to change notification settings - Fork 0
/
printTypeExpressionTable.c
84 lines (80 loc) · 2.69 KB
/
printTypeExpressionTable.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
Group Number: 55
Group Member details:
1. Aarjav Jain -- 2018A7PS0222P
2. Pranav Gupta -- 2018A7PS0190P
3. Harsh Sulakhe -- 2018A7PS0186P
*/
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "datastructuresandprototypes.h"
// Function Definition: printTypeExpressionTable (typeExpressionTable T)
void printTypeExpression (typeExpressionTable *T){
// printf ("Inside printTypeExpressionTable.\n");
// printf("Field1\t\tField2\t\tField3\t\tField4\n");
if (T == NULL)
return;
typeExpressionTable* l = T;
if (l->type == primitive){
printf("<type = %s>", l->exp->a->basicElementType);
}
else if (l->type == rect_array){
printf("<type=rectangularArray, dimensions=%d, ", l->exp->b->dimensions);
rect_dimension* temp = l->exp->b->d;
int count = 0;
while(temp){
count++;
printf("range_R%d=(%s,%s), ", count, temp->low, temp->high);
temp = temp->next;
}
printf("basicElementType=INTEGER>");
} else if (l->type == jagged_array) {
printf("<type=jaggedArray, dimensions=%d, range_R1=(%d,%d), range_R2=(", l->exp->c->dimensions, l->exp->c->low, l->exp->c->high);
jagged_dimension* temp = l->exp->c->d;
int count = 1;
while (temp) {
count++;
printf("%d", temp->size);
if (temp->inner_size) {
printf("[");
dimension* in = temp->inner_size;
while (in) {
printf("%d", in->size);
if (in->next) printf(",");
in = in->next;
}
printf("]");
}
if (temp->next) printf(",");
temp = temp->next;
}
printf("), basicElementType=INTEGER>");
}
return;
}
void printTypeExpressionTable(typeExpressionTable* T){
typeExpressionTable* l = T;
printf("%20s\t%20s\t%20s\t%10s\n", "Field1", "Field2", "Field3", "Field4");
printf("%20s\t%20s\t%20s\t%10s\n", "------", "------", "------", "------");
while(l){
printf("%20s\t", l->name);
if (l->type == primitive)
printf("%20s\t","Primitive");
else if (l->type == rect_array)
printf("%20s\t","Rectangular Array");
else if (l->type == jagged_array)
printf("%20s\t","Jagged Array");
if (l->array_type == stat)
printf("%20s\t","Static");
else if (l->array_type == dyn)
printf("%20s\t","Dynamic");
else if (l->array_type == NA)
printf("%20s\t","Not Applicable");
printTypeExpression(l);
printf("\n");
l = l->next;
}
return;
}