Exemple #1
0
 public bool Contains(object value)
 {
     foreach (object item in this)
     {
         if (Runtime.Equal(item, value))
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #2
0
 private object CompilePostfix()
 {
     // postfix-expr: primary-expr
     // postfix-expr: identifier '(' expr-list ')'
     // postfix-expr: '(' expr ')'
     if (Token is Symbol && Runtime.Equal(NextToken, "("))
     {
         var func = Token;
         Accept();
         Accept();
         var args = CompileArgs(")");
         return(Runtime.MakeListStar(func, args));
     }
     else if (Token is Symbol && Runtime.Equal(NextToken, "["))
     {
         var arr = Token;
         Accept();
         Accept();
         var args = CompileArgs("]");
         return(Runtime.MakeListStar(Symbols.GetElt, arr, args));
     }
     else if (Runtime.Equal(Token, "("))
     {
         Accept();
         var args = CompileArgs(")");
         if (args.Count == 1)
         {
             return(args[0]);
         }
         else
         {
             return(Runtime.MakeListStar(Symbols.Do, args));
         }
     }
     else
     {
         return(CompileAtom());
     }
 }
Exemple #3
0
        private Vector CompileArgs(string terminator)
        {
            var args = new Vector();

            while (true)
            {
                args.Add(Compile());
                if (!Runtime.Equal(Token, ","))
                {
                    break;
                }
                Accept();
            }

            if (!Runtime.Equal(Token, terminator))
            {
                throw new LispException("Missing {0} in infix expression: {1}", terminator, InfixStr);
            }

            Accept();

            return(args);
        }
Exemple #4
0
 object IApply.Apply(object[] args)
 {
     return(Runtime.Equal(args));
 }