org.erights.e.elang.scope
Class ScopeMapLink

java.lang.Object
  |
  +--org.erights.e.elang.scope.ScopeMap
        |
        +--org.erights.e.elang.scope.ScopeMapLink

class ScopeMapLink
extends ScopeMap

A ScopeMap having at least one name => NounExpr association in the innermost contour.

Built from a single association and a previous ScopeMap.

Author:
E. Dean Tribble, some mods by Mark S. Miller

Field Summary
private  String myName
           
private  ScopeMap myNextMap
           
private  NounExpr myNoun
           
 
Fields inherited from class org.erights.e.elang.scope.ScopeMap
EMPTY
 
Constructor Summary
(package private) ScopeMapLink(String name, NounExpr noun, ScopeMap nextMap)
           
 
Method Summary
(package private)  void addNamesTo(FlexSet names)
          Adds all the names mapped by this ScopeMap to 'names'
 void assertShadowable(String name)
          Enabled: Throw an exception is the varName may not be shadowed because it is already defined in the current (i.e.
 boolean contains(String name)
          Enabled: Is 'varName' in scope?
 NounExpr getNoun(String name)
          Enabled: Gets the NounExpr which will retrieve the Slot/value of the variable named 'varName' from a corresponding EvalContext.
 
Methods inherited from class org.erights.e.elang.scope.ScopeMap
make, namesSet, nested, with
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

myNextMap

private final ScopeMap myNextMap

myName

private final String myName

myNoun

private final NounExpr myNoun
Constructor Detail

ScopeMapLink

ScopeMapLink(String name,
             NounExpr noun,
             ScopeMap nextMap)
Method Detail

getNoun

public NounExpr getNoun(String name)
Description copied from class: ScopeMap
Enabled: Gets the NounExpr which will retrieve the Slot/value of the variable named 'varName' from a corresponding EvalContext.

Specified by:
getNoun in class ScopeMap

contains

public boolean contains(String name)
Description copied from class: ScopeMap
Enabled: Is 'varName' in scope?

Specified by:
contains in class ScopeMap

addNamesTo

void addNamesTo(FlexSet names)
Description copied from class: ScopeMap
Adds all the names mapped by this ScopeMap to 'names'

Specified by:
addNamesTo in class ScopeMap

assertShadowable

public void assertShadowable(String name)
Description copied from class: ScopeMap
Enabled: Throw an exception is the varName may not be shadowed because it is already defined in the current (i.e. innermost) contour.

If varName may not be shadowed because it is reserved, this is caught in org.erights.e.elang.evm.NounPattern rather than here.

Specified by:
assertShadowable in class ScopeMap


comments?