blob: 435e48d80e59ee16d4e7a29dfd6e0896072777dd (
plain)
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
|
package sableCCCalculator;
import java.util.HashMap;
import sableCCCalculator.types.*;
public class SymbolTable {
public interface SymbolTableIndex {}
public abstract class Name implements SymbolTableIndex {
protected String name;
String getName() {
return this.name;
}
}
public class Constant implements SymbolTableIndex {
int index;
public Constant(int index) {
this.index = index;
}
}
public class Variable extends Name {
public Variable(String name) {
this.name = name;
}
}
private HashMap<SymbolTableIndex, Type> theSymbolTable = new HashMap<>();
public SymbolTableIndex addConstant(Type item) {
SymbolTableIndex index = new Constant(item.hashCode());
theSymbolTable.put(index, item);
return index;
}
public SymbolTableIndex addVariable(Type item, String name) {
SymbolTableIndex index = new Variable(name);
theSymbolTable.put(index, item);
return index;
}
public Type get(SymbolTableIndex index) {
return theSymbolTable.get(index);
}
}
|