-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasttyping.cpp
107 lines (88 loc) · 1.52 KB
/
asttyping.cpp
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
#include "asttyping.h"
extern symboltable symtab;
extern typelibrary typelib;
//
//
//////////////////// aExpr
//
//
aExpr::aExpr(string id)
{
sid = symtab.namelookup(id)->id;
}
void aExpr::debug(int ind)
{
cout << indent(ind) << "aexpr (" << symtab.idlookup(sid)->name << ")" << endl;
}
registerid aExpr::generateCode(operation* &p)
{
cout << "not implementeddddd." << endl;
exit(1);
return 0;
}
void aExpr::semanticCheck()
{
}
//
//
//////////////////// preposition
//
//
void preposition::debug(int ind)
{
cout << indent(ind) << "preposition (" << symtab.idlookup(name)->name << ")" << endl;
if (atype) atype->debug(ind + 1);
}
registerid preposition::generateCode(operation* &p)
{
cout << "NOT IMPLEMENTED: preposition" << endl;
exit(1);
return -1;
}
void preposition::semanticCheck()
{
}
preposition::~preposition()
{
if (atype) delete atype;
}
//
//
//////////////////// preplist
//
//
void preplist::debug(int ind)
{
cout << indent(ind) << "preplist" << endl;
preps.debug(ind + 1);
}
registerid preplist::generateCode(operation* &p)
{
cout << "not implemented: preplist" << endl;
exit(1);
return -1;
}
void preplist::semanticCheck()
{
}
vector<type*> preplist::getTypes()
{
vector<type*> r;
for (preps.begin() ; !preps.atEnd(); preps.gotoNext())
{
preposition* p = preps.getCurrent();
symbolid n = p->getName();
string namestr = symtab.idlookup(n)->name;
r.push_back(typelib.getOrCreateType(namestr));
}
return r;
}
//
//
//////////////////// arrayAExpr
//
//
arrayAExpr::~arrayAExpr()
{
delete t;
}