Class StandardSymbolTable

java.lang.Object
gw.lang.parser.StandardSymbolTable
All Implemented Interfaces:
IStackProvider, ISymbolTable

public class StandardSymbolTable extends Object implements ISymbolTable
  • Field Details

    • PRINT

      public static final Method PRINT
  • Constructor Details

    • StandardSymbolTable

      public StandardSymbolTable()
    • StandardSymbolTable

      public StandardSymbolTable(boolean bDefineCommonSymbols)
      Parameters:
      bDefineCommonSymbols -
  • Method Details

    • getSymbol

      public ISymbol getSymbol(CharSequence name)
      Specified by:
      getSymbol in interface ISymbolTable
      Returns:
      The symbol mapped to the specified name.
    • putSymbol

      public void putSymbol(ISymbol symbol)
      Description copied from interface: ISymbolTable
      Maps a name to a symbol in the table.
      Specified by:
      putSymbol in interface ISymbolTable
    • removeSymbol

      public ISymbol removeSymbol(CharSequence name)
      Description copied from interface: ISymbolTable
      Removes a previously mapped symbol.
      Specified by:
      removeSymbol in interface ISymbolTable
      Parameters:
      name - The name mapped to the symbol to remove.
    • getTotalSymbolCount

      public int getTotalSymbolCount()
      Specified by:
      getTotalSymbolCount in interface ISymbolTable
      Returns:
      the number of symbols exist in this table.
    • getSymbols

      public Map getSymbols()
      Specified by:
      getSymbols in interface ISymbolTable
      Returns:
      A list of currently mapped ISymbols e.g., the values in a hash table based implementation.
    • getSymbols

      public Map getSymbols(int iStartIndex, int iPrivateGlobalIndex)
      Specified by:
      getSymbols in interface ISymbolTable
      Parameters:
      iStartIndex - Scopes positioned on the stack at an index greater than this number are not included. Very useful for examining a specific scope e.g., for a debugger. Note an index invalid input: '<' 0 indicates that all scopes are included.
      Returns:
      A list of currently mapped ISymbols e.g., the values in a hash table based implementation.
    • getScopeCount

      public int getScopeCount()
      Specified by:
      getScopeCount in interface ISymbolTable
      Returns:
      The number of scopes on the stack. These include all scopes: global, isolated, and local. Useful for recording a specific offset in the symbol table e.g., a debugger needs this to jump to a position in a call stack.
      See Also:
    • getPrivateGlobalScopeCount

      public int getPrivateGlobalScopeCount()
      Specified by:
      getPrivateGlobalScopeCount in interface ISymbolTable
      Returns:
      The number of scopes on the private global stack. Useful for recording a specific offset in the symbol table e.g., a debugger needs this to jump to a position in a call stack.
      See Also:
    • pushScope

      public IScope pushScope()
      Description copied from interface: ISymbolTable
      Push a local scope context onto the symbol table.
      Specified by:
      pushScope in interface ISymbolTable
      Returns:
      The pushed scope.
    • pushScope

      public IScope pushScope(IScope scope)
      Description copied from interface: ISymbolTable
      Push a local scope context onto the symbol table.
      Specified by:
      pushScope in interface ISymbolTable
      Parameters:
      scope - the scope to push
      Returns:
      The pushed scope.
    • pushPrivateGlobalScope

      public void pushPrivateGlobalScope(IScope scope)
      Description copied from interface: ISymbolTable
      Push a global scope you specify onto the private global scope space. Useful for handling private global scopes for libraries, namespaces, etc. As this functionality is primarily for Gosu runtime, you'll likely never need to call this.

      If you need to push a scope with restricted visibility, consider calling pushIsolatedScope() instead.

      Specified by:
      pushPrivateGlobalScope in interface ISymbolTable
      See Also:
    • popGlobalScope

      public void popGlobalScope(IScope scope)
      Description copied from interface: ISymbolTable
      Pops a global scope previously pushed via pushGlobalScope( IScope ) or pushPrivateGlobalScope( IScope ).

      You probably shouldn't call this method.

      Specified by:
      popGlobalScope in interface ISymbolTable
      See Also:
    • pushIsolatedScope

      public IScope pushIsolatedScope(IActivationContext activationCtx)
      Description copied from interface: ISymbolTable
      Push a scope that demarcates an activation record. The behavior is nearly identical to pushScope(), the [big] difference is that activation record scopes cannot access symbols from other activation record scopes.

      Use popScope() to pop a scope pushed via this method.

      Specified by:
      pushIsolatedScope in interface ISymbolTable
      Parameters:
      activationCtx - The context for the activation record.
      Returns:
      The isolated scope (aka the activation record).
    • popScope

      public IScope popScope()
      Description copied from interface: ISymbolTable
      Pop a local scope context from the symbol table.

      See pushScope() for implementation suggestions.

      Specified by:
      popScope in interface ISymbolTable
      Returns:
      The popped scope.
    • popScope

      public IScope popScope(IScope scope)
      Specified by:
      popScope in interface ISymbolTable
    • copy

      public ISymbolTable copy()
      Description copied from interface: ISymbolTable
      Perform a semi-deep copy of this symbol table. Symbols need not be cloned.
      Specified by:
      copy in interface ISymbolTable
      Returns:
      A semi-deep copy of this symbol table.
    • getThisSymbolFromStackOrMap

      public ISymbol getThisSymbolFromStackOrMap()
      Description copied from interface: ISymbolTable
      Get the 'this' symbol from either the stack or the table.
      Specified by:
      getThisSymbolFromStackOrMap in interface ISymbolTable
    • defineCommonSymbols

      public void defineCommonSymbols()
      Description copied from interface: ISymbolTable
      Define symbols that are considered ubiquitous. There may be none.
      Specified by:
      defineCommonSymbols in interface ISymbolTable
    • isSymbolWithinScope

      public boolean isSymbolWithinScope(ISymbol symToFind, IScope containingScope)
      Specified by:
      isSymbolWithinScope in interface ISymbolTable
      Returns:
      true if the given symbol is within the given scope
    • peekIsolatedScope

      public IScope peekIsolatedScope()
      Specified by:
      peekIsolatedScope in interface ISymbolTable
      Returns:
      the top-most isolated scope
    • getNextStackIndex

      public int getNextStackIndex()
      For compile-time assignment of stack indexes.
      Specified by:
      getNextStackIndex in interface IStackProvider
    • getNextStackIndexForScope

      public int getNextStackIndexForScope(IScope scope)
      For compile-time assignment of stack indexes.
      Specified by:
      getNextStackIndexForScope in interface IStackProvider
    • hasIsolatedScope

      public boolean hasIsolatedScope()
      Description copied from interface: IStackProvider
      For compile-time use. Returns true iff an isolated scope is visible.
      Specified by:
      hasIsolatedScope in interface IStackProvider
    • peekScope

      public IScope peekScope()
      Specified by:
      peekScope in interface ISymbolTable
      Returns:
      the currently active scope
    • peekScope

      public IScope peekScope(int iPos)
      Specified by:
      peekScope in interface ISymbolTable
    • toString

      public String toString()
      Overrides:
      toString in class Object