forked from gousiosg/AegeanC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
symbol.c
130 lines (104 loc) · 2.17 KB
/
symbol.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct list {
char *c;
struct list *next;
};
typedef struct list *lista;
struct list *var_head,*fun_head;
lista tmp;
char *character1;
int search_mark;
lista var_list_new(void)
{ lista m=(lista)malloc(sizeof(struct list));
var_head=NULL;
return(m);
}
lista fun_list_new(void)
{ lista s=(lista)malloc(sizeof(struct list));
fun_head=NULL;
return(s);
}
int m_search_mark(lista m, char *i)
{ search_mark=1;
for (m=var_head; m; m=m->next)
{ if (strcmp(m->c,i)==0)
search_mark=0;
}
return(search_mark);
}
int s_search_mark(lista s, char *i)
{ search_mark=1;
for (s=fun_head; s; s=s->next)
{ if (strcmp(s->c,i)==0)
search_mark=0;
}
return(search_mark);
}
lista m_list_add(lista m, char *i)
{ lista tmp;
tmp=var_head;
search_mark=m_search_mark(m,i);
if (search_mark==0)
fprintf(stderr," Warning:Redefinition error: two var_names with the same value!!!\n");
else
{
var_head=tmp;
if(var_head==NULL)
{ m->c=i;
m->next=var_head;
var_head=m;
return(m);
}
else
{ m=(lista)malloc(sizeof(struct list));
m->c=i;
m->next=var_head;
var_head=m;
return(m);
}
}
}
lista s_list_add(lista s, char *i)
{ lista tmp;
tmp=fun_head;
search_mark=s_search_mark(s,i);
if (search_mark==0)
fprintf(stderr," Warning:Redefinition error: two function_names with the same value!!!\n");
else
{
fun_head=tmp;
if(fun_head==NULL)
{ s->c=i;
s->next=fun_head;
fun_head=s;
return(s);
}
else
{ s=(lista)malloc(sizeof(struct list));
s->c=i;
s->next=fun_head;
fun_head=s;
return(s);
}
}
}
void
m_search_results(lista s, char *i)
{
if (m_search_mark(s,i)==1)
{
fprintf(stderr,"ERROR: Non declared variable %s",i);
exit(1);
}
}
void
s_search_results(lista s, char *i)
{
if (s_search_mark(s,i)==1)
{
fprintf(stderr,"ERROR: Non declared function %s",i);
exit(1);
}
}