Package gnu.expr

Class NameLookup

All Implemented Interfaces:
Map<Object,Declaration>

public class NameLookup extends GeneralHashTable<Object,Declaration>
Manages the set of declarations "currently" in scope.
  • Constructor Details

    • NameLookup

      public NameLookup(Language language)
  • Method Details

    • getLanguage

      public Language getLanguage()
    • setLanguage

      public void setLanguage(Language language)
    • getInstance

      public static NameLookup getInstance(Environment env, Language language)
      Get or create a NameLookup instance for a given Environment. We want the same NameLookup instance to be used for multiple interactive commands in the same "session", to preserve top-level declarations. We do that by registering it in the Environment.
    • setInstance

      public static void setInstance(Environment env, NameLookup instance)
    • doSaveTopLevelRedefs

      public boolean doSaveTopLevelRedefs()
      When true, top-level defs should push rather then replace old ones. Otherwise, a module-level declaration should replace a matching previous declaration, to avoid leaks. However, sometimes we temporarily push new declarations that should not permanently replace old declarations - for example when a hygienic macro changes the current scope.
    • pushSaveTopLevelRedefs

      public void pushSaveTopLevelRedefs()
    • popSaveTopLevelRedefs

      public void popSaveTopLevelRedefs()
    • push

      public void push(Declaration decl)
    • pop

      public boolean pop(Declaration decl)
    • push

      public void push(ScopeExp exp)
    • pop

      public void pop(ScopeExp exp)
    • removeSubsumed

      public void removeSubsumed(Declaration decl)
      Remove visible declarations subsumed (hidden) by a given declaration. This is primarily used to avoid memory leaks.
    • subsumedBy

      protected boolean subsumedBy(Declaration decl, Declaration other)
      True if decl subsumes (hides) other.
    • lookup

      public Declaration lookup(Object symbol, int namespace)
    • lookup

      public Declaration lookup(Object symbol, boolean function)
    • getCompletingSymbols

      public void getCompletingSymbols(String initialPart, int namespace, List<? super String> candidates)