コード例 #1
0
        static void Main(string[] args)
        {
            Stack user = new Stack();
            Program count = new Program();
            Regex rgx = new Regex(@"-?\d+\s?[+-/*%]\s?-?\d+");
            Regex addToDictionary = new Regex(@"[a-zA-Z]\s?[=]\s?-?\d+");
            Regex constants1 = new Regex(@"[a-zA-Z]\s?[+-/*%]\s?\d+");
            Regex constants2 = new Regex(@"\d+\s?[+-/*%]\s?[a-zA-Z]");

            int counter = 0;
            bool running = true;

            while (running)
            {
               Console.Write("[" + counter + "]> ");
                string input = Console.ReadLine();

                if( input == "exit" || input =="quit")
                {
                    Console.WriteLine("Bye!!");
                    running = false;
                }
                else if(input == "lastq")
                {
                    Console.WriteLine("> Your last expression was: " + "\" " + user.Expression + " \"");
                }
                else if (input == "last")
                {
                    Console.WriteLine("> Your last answer was: " + "\" " + user.Answer + " \"");
                }
                else if (addToDictionary.IsMatch(input))
                {
                    user.Constants(input);
                }
                else if (constants1.IsMatch(input))
                {
                    string newInput = user.AddSpace(input);
                    string[] array = newInput.Split();
                    int value = user.constants[array[0]];

                    if(array[1] == "+")
                    {
                        user.EvalEx(value + "+" + array[2]);
                    }
                    else if(array[1] == "-")
                    {
                        user.EvalEx(value + "-" + array[2]);
                    }
                    else if (array[1] == "/")
                    {
                        user.EvalEx(value + "/" + array[2]);
                    }
                    else if (array[1] == "*")
                    {
                        user.EvalEx(value + "*" + array[2]);
                    }
                    else
                    {
                        user.EvalEx(value + "%" + array[2]);
                    }
                    Console.WriteLine("   = " + user.Answer);
                }
                else if (constants2.IsMatch(input))
                {
                    string newInput = user.AddSpace(input);
                    string[] array = newInput.Split();
                    int value = user.constants[array[2]];

                    if (array[1] == "+")
                    {
                        user.EvalEx(array[0] + "+" + value);
                    }
                    else if (array[1] == "-")
                    {
                        user.EvalEx(array[0] + "-" + value);
                    }
                    else if (array[1] == "/")
                    {
                        user.EvalEx(array[0] + "/" + value);
                    }
                    else if (array[1] == "*")
                    {
                        user.EvalEx(array[0] + "*" + value);
                    }
                    else
                    {
                        user.EvalEx(array[0] + "%" + value);
                    }
                    Console.WriteLine("   = " + user.Answer);
                }
                else if(rgx.IsMatch(input))
                {
                    user.EvalEx(input);
                    Console.WriteLine("   = " + user.Answer);
                }
                else
                {
                    Console.WriteLine("> Please enter a valid expression or command");
                    counter -= 1;
                }
                counter += 1;
            }
        }