예제 #1
0
 public void SingleConsTest()
 {
     var symbol = new Symbol("abc");
     var cons = new Cons(symbol, LispNull.Nil);
     var enumerator = new ListEnumerator(cons);
     Assert.IsTrue(enumerator.MoveNext());
     Assert.AreSame(symbol, enumerator.Current);
     Assert.IsFalse(enumerator.MoveNext());
 }
예제 #2
0
파일: LispEnvironment.cs 프로젝트: nja/keel
 public void AddBinding(Symbol symbol, LispObject value)
 {
     if (!dict.ContainsKey(symbol))
     {
         dict.Add(symbol, value);
     }
     else
     {
         throw new EnvironmentException(symbol + " already bound");
     }
 }
예제 #3
0
파일: LispEnvironment.cs 프로젝트: nja/keel
        public bool TryLookUp(Symbol symbol, out LispObject value)
        {
            if (dict.TryGetValue(symbol, out value))
            {
                return true;
            }

            if (!this.IsRoot)
            {
                return this.parent.TryLookUp(symbol, out value);
            }

            return false;
        }
예제 #4
0
파일: LispEnvironment.cs 프로젝트: nja/keel
 public void SetValue(Symbol symbol, LispObject value)
 {
     if (dict.ContainsKey(symbol))
     {
         dict[symbol] = value;
     }
     else if (!IsRoot)
     {
         parent.SetValue(symbol, value);
     }
     else
     {
         throw new EnvironmentException("No binding for " + symbol);
     }
 }
예제 #5
0
파일: LispEnvironment.cs 프로젝트: nja/keel
        public LispObject LookUp(Symbol symbol)
        {
            LispObject result;

            if (!this.TryLookUp(symbol, out result))
            {
                throw new EnvironmentException("No binding for " + symbol);
            }

            return result;
        }
예제 #6
0
파일: Repl.cs 프로젝트: nja/keel
        private Symbol[] InternStars()
        {
            var name = string.Empty;
            var symbols = new Symbol[3];

            for (int i = 0; i < symbols.Length; i++)
            {
                name += "*";
                symbols[i] = environment.Symbols.Intern(name);
            }

            return symbols;
        }