1. with Values;                            use Values; 
  2.  
  3. package Symbol_Resolvers is 
  4.  
  5.     -- A Symbol_Resolver is capable of resolving named values (symbols) into 
  6.     -- Value objects. Symbol resolvers are used in expression evaluation when 
  7.     -- the value of a variable needs to be to evaluated. 
  8.     type Symbol_Resolver is interface; 
  9.     type A_Symbol_Resolver is access all Symbol_Resolver'Class; 
  10.  
  11.     -- Resolves the symbol named 'symbol', returning the result. null will be 
  12.     -- returned if the symbol can't be resolved. 
  13.     function Resolve( this   : access Symbol_Resolver; 
  14.                       symbol : String ) return A_Value is abstract; 
  15.  
  16. end Symbol_Resolvers;