package nebula.vm; public class Symbol { // A generic programming language symbol String name; // All symbols at least have a name Type type; // Scope scope; // All symbols know what scope contains them. public Symbol(String name) { this.name = name; } public Symbol(String name, Type type) { this(name); this.type = type; } public String getName() { return name; } @Override public boolean equals(Object o) { return o instanceof Symbol && name.equals(((Symbol) o).name); } @Override public int hashCode() { return name.hashCode(); } public static String stripBrackets(String s) { return s.substring(1,s.length()-1); } }