diff options
| author | jwansek <eddie.atten.ea29@gmail.com> | 2021-10-24 15:59:49 +0100 | 
|---|---|---|
| committer | jwansek <eddie.atten.ea29@gmail.com> | 2021-10-24 15:59:49 +0100 | 
| commit | 814c115d8accedc07e42d218bfdab639148fa836 (patch) | |
| tree | d767deb7c02ad4bb2e26e507e9794ec09a9b28ca /code/simpleSableCCCalulator | |
| parent | 8f50e4d189bad9dbd180fd945881950769c3a989 (diff) | |
| download | esotericFORTRAN-814c115d8accedc07e42d218bfdab639148fa836.tar.gz esotericFORTRAN-814c115d8accedc07e42d218bfdab639148fa836.zip | |
started work on the symbol table, preparing for variables
Diffstat (limited to 'code/simpleSableCCCalulator')
| -rw-r--r-- | code/simpleSableCCCalulator/sableCCCalculator/SymbolTable.java | 48 | 
1 files changed, 48 insertions, 0 deletions
| 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<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); +    } +} | 
