Exemple #1
0
        public static void RunConsole(string code)
        {
            var tokenizer = new Tokenizer();

            try
            {
                List <Token> list = tokenizer.Tokenize(code);

                IEnumerable <Expression> expressions = new Expressionizer().Expressionize(list, code);

                foreach (Expression exp in expressions)
                {
                    Console.Write(exp.ToString() + "=");

                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine(exp.GetValue());
                    Console.ForegroundColor = ConsoleColor.White;
                }
            }
            catch (TokenizeException e)
            {
                Console.WriteLine(e);
            }
            catch (ExpressionException e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Exception:\n" + e.Message);

                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\nException at: ");
                e.CallStack.OutputStackposition();
            }
        }
Exemple #2
0
        public static Value Run(string code)
        {
            var   tokenizer   = new Tokenizer();
            Value returnValue = NullValue.Null;

            try
            {
                List <Token> list = tokenizer.Tokenize(code);

                IEnumerable <Expression> expressions = new Expressionizer().Expressionize(list, code);

                foreach (Expression exp in expressions)
                {
                    returnValue = exp.GetValue();
                }
            }
            catch (TokenizeException e)
            {
                Console.WriteLine(e);
            }
            catch (ExpressionException e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Exception:\n" + e.Message);

                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\nException at: ");
                e.CallStack.OutputStackposition();
            }

            return(returnValue);
        }
Exemple #3
0
        public static void RunDebug(string code)
        {
            var tokenizer = new Tokenizer();

            try
            {
                List <Token> list = tokenizer.Tokenize(code);

                var debug = Expand(list).ToList();

                var names = debug.Select(t => t.Name).ToList();
                var types = debug.Select(t => MapType(t.Type)).ToList();
                var texts = debug.Select(t => t.Text).ToList();

                var lengths = names.Zip(types.Zip(texts)).Select((a) => Math.Max(a.First.Length, Math.Max(a.Second.First.Length, a.Second.Second.Length))).ToList();

                for (int i = 0; i < 3; i++)
                {
                    List <string> cur = i switch
                    {
                        0 => names,
                        1 => types,
                        2 => texts
                    };



                    for (int j = 0; j < debug.Count; j++)
                    {
                        string str = new string(' ', (lengths[j] - cur[j].Length) / 2);
                        str += cur[j];
                        str += new string(' ', lengths[j] + 3 - str.Length);
                        Console.Write(str);
                    }

                    Console.WriteLine();
                }

                Console.WriteLine();

                IEnumerable <Expression> expressions = new Expressionizer().Expressionize(list, code);

                foreach (Expression exp in expressions)
                {
                    Console.Write(exp.ToString() + "=");

                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine(exp.GetValue());
                    Console.ForegroundColor = ConsoleColor.White;
                }
            }
            catch (TokenizeException e)
            {
                Console.WriteLine(e);
            }
            catch (ExpressionException e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Exception:\n" + e.Message);

                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\nException at: ");
                e.CallStack.OutputStackposition();
            }
        }