public override Object Eval()
 {
     if (value is Function)
     {
         return(parser.setVariable(name, value));
     }
     else
     {
         return(parser.setVariable(name, value.Eval()));
     }
 }
        public void Interpret(String source, bool debug)
        {
            Tokenizer tokenizer = new Tokenizer();
            Parser    parser    = new Parser(tokenizer.Tokenize(source));

            parser.setVariable("pi", 3.14159265358979);
            parser.setVariable("e", 2.718281828459045);

            if (debug)
            {
                DumpTokens(parser);
            }

            parser.MatchAndEat(TokenType.SCRIPT);

            Console.WriteLine("\n=============== Building block! =================\n");
            Node script = parser.Block();

            script.Eval();
        }