5 public class TokenLiteralExpr extends LiteralExpr {
10 static int count = 100;
11 static Hashtable tokens = new Hashtable();
13 public TokenLiteralExpr(String token) {
15 td = ReservedTypeDescriptor.INT;
17 if (tokens.containsKey(token)) {
18 num = (Integer) tokens.get(token);
20 num = new Integer(count++);
21 tokens.put(token, num);
25 public abstract boolean equals(Map remap, Expr e) {
28 else if (!e instanceof TokenLiteralExpr)
30 else return ((BooleanLiteralExpr)e).num.equals(num);
33 public String getValue() {
37 public void generate(CodeWriter writer, VarDescriptor dest) {
38 writer.outputline("int " + dest.getSafeSymbol() + " = " + num.toString().toString() + ";");
41 public void prettyPrint(PrettyPrinter pp) {
42 pp.output("{" + token + " = " + num + "}");
45 public TypeDescriptor typecheck(SemanticAnalyzer sa) {
46 td = ReservedTypeDescriptor.INT;