def do_evaluate( self, env ): idx = self.index.evaluate( env ) arr = self.array_value.evaluate( env ) if arr.is_known( env ): assert( idx.__class__ == PepInt ) assert( implements_interface( arr, PepArray ) ) # TODO: handle large number indices return arr.get_index( int( idx.value ) ).evaluate( env ) else: return self
def do_evaluate( self, env ): # Look up this symbol in the namespace of our environment value = self._lookup( env ).evaluate( env ) if value.is_known( env ): # Pass back what we looked up return value elif implements_interface( value, PepSymbol ): return value else: # If what we find is a variable (i.e. something unknown until # runtime) then we simply return ourselves: for the purpose of # rendering, this _is_ a symbol. return self