예제 #1
0
        static void Main(string[] args)
        {
            List<KeyValuePair<Expression, Expression>> InOut = new List<KeyValuePair<Expression, Expression>>();

            DynamicNamespace console = new DynamicNamespace();

            console.Add(NativeFunction.New<Action<Expression, Variable, Constant, Constant>>("Plot", (f, x, x0, x1) => Plot(f, x, x0, x1)));
            console.Add(NativeFunction.New<Action<Expression, Variable>>("Plot", (f, x) => Plot(f, x, -10, 10)));
            console.Add(NativeFunction.New<Action>("Clear", () => System.Console.Clear()));
            console.Add(NativeFunction.New<Func<Expression, Expression>>("In", x => InOut[(int)x].Key));
            console.Add(NativeFunction.New<Func<Expression, Expression>>("Out", x => InOut[(int)x].Value));

            Parser parser = new Parser(new NamespaceSet(Namespace.Global, console));

            while (true)
            {
                try
                {
                    System.Console.Write("> ");
                    string s = System.Console.ReadLine();
                    System.Console.WriteLine();

                    if (s == "Exit")
                        break;

                    Expression input = parser.Parse(s);
                    Expression output = input.Evaluate();

                    int n = InOut.Count;

                    InOut.Add(new KeyValuePair<Expression, Expression>(input, output));

                    System.Console.WriteLine(Arrow.New("In[" + n + "]", input).ToPrettyString());
                    System.Console.WriteLine();
                    System.Console.WriteLine(Arrow.New("Out[" + n + "]", output).ToPrettyString());
                    System.Console.WriteLine();
                }
                catch (Exception Ex)
                {
                    System.Console.WriteLine(Ex.Message);
                }
            }
        }