Ejemplo n.º 1
0
        public (IObject, bool) Get(string name)
        {
            if (_store.ContainsKey(name))
            {
                return(_store[name], true);
            }

            if (!_store.ContainsKey(name) && _outer != null)
            {
                return(_outer.Get(name));
            }

            return(null, false);
        }
Ejemplo n.º 2
0
        private IObject EvalIdentifier(Identifier identifier, Environment env)
        {
            if (BuiltIns.BuiltInFunctions.ContainsKey(identifier.Value))
            {
                var builtin = BuiltIns.BuiltInFunctions[identifier.Value];
                return(builtin);
            }

            var(val, ok) = env.Get(identifier.Value);
            if (!ok)
            {
                return new Error()
                       {
                           Message = $"identifier not found: {identifier.Value}"
                       }
            }
            ;
            return(val);
        }