Class SymbolTable

  • All Implemented Interfaces:
    java.io.Serializable

    public class SymbolTable
    extends java.lang.Object
    implements java.io.Serializable
    Table of symbols in a query.
    See Also:
    Serialized Form
    • Field Detail

      • parentSymbolTable

        SymbolTable parentSymbolTable
        SymbolTable for the parent query (when this is a subquery), otherwise null.
      • symbols

        java.util.Map<java.lang.String,​Symbol> symbols
      • resolver

        transient SymbolResolver resolver
        Resolver for symbols. Note that this is not serialisable, but is set when compile() is called.
    • Constructor Detail

      • SymbolTable

        public SymbolTable()
    • Method Detail

      • setSymbolResolver

        public void setSymbolResolver​(SymbolResolver resolver)
      • setParentSymbolTable

        public void setParentSymbolTable​(SymbolTable tbl)
        Set the symbol table for any parent query, so that if this query refers to an expression from the parent query then it is resolvable.
        Parameters:
        tbl - The parent symbol table
      • getParentSymbolTable

        public SymbolTable getParentSymbolTable()
        Accessor for the parent symbol table (if any).
        Returns:
        The parent symbol table
      • getSymbolNames

        public java.util.Collection<java.lang.String> getSymbolNames()
        Accessor for the names of the symbols in this table.
        Returns:
        Names of the symbols
      • getSymbol

        public Symbol getSymbol​(java.lang.String name)
        Return the Symbol for the specified name if known. If there is a parent symbol table then looks up in that after if not found here (unless the name is "this").
        Parameters:
        name - The name to look up
        Returns:
        The symbol for this name
      • getSymbolIgnoreCase

        public Symbol getSymbolIgnoreCase​(java.lang.String name)
        Return the Symbol for the specified name if known, treating the name as case-insensitive. If there is a parent symbol table then looks up in that after if not found here (unless the name is "this").
        Parameters:
        name - The name to look up
        Returns:
        The symbol for this name
      • hasSymbol

        public boolean hasSymbol​(java.lang.String name)
        Accessor for whether this symbol table has a particular symbol name. Does not make any use of parent symbol table(s).
        Parameters:
        name - The name of the symbol we require
        Returns:
        Whether it is present here
      • addSymbol

        public int addSymbol​(Symbol symbol)
      • removeSymbol

        public void removeSymbol​(Symbol symbol)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object