From 814c115d8accedc07e42d218bfdab639148fa836 Mon Sep 17 00:00:00 2001 From: jwansek Date: Sun, 24 Oct 2021 15:59:49 +0100 Subject: started work on the symbol table, preparing for variables --- .../sableCCCalculator/SymbolTable.java | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 code/simpleSableCCCalulator/sableCCCalculator/SymbolTable.java diff --git a/code/simpleSableCCCalulator/sableCCCalculator/SymbolTable.java b/code/simpleSableCCCalulator/sableCCCalculator/SymbolTable.java new file mode 100644 index 0000000..435e48d --- /dev/null +++ b/code/simpleSableCCCalulator/sableCCCalculator/SymbolTable.java @@ -0,0 +1,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 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); + } +} -- cgit v1.2.3