예제 #1
0
        public static void Run()
        {
            var env = new ScriptyEnvironment();

            while (true)
            {
                Console.Write(Prompt);
                var input = Console.ReadLine();
                if (input is null)
                {
                    return;
                }

                var lexer  = new Lexer(input);
                var parser = new Parser(lexer);

                var program = parser.ParseCode();
                if (parser.Errors.Count != 0)
                {
                    PrintParserErrors(parser.Errors);
                    continue;
                }

                var evaluated = Evaluator.Eval(program, env);
                if (!(evaluated is null))
                {
                    Console.WriteLine(evaluated.Inspect());
                }
            }
        }
예제 #2
0
        public static IObject TestEval(string input)
        {
            var lexer   = new Lexer(input);
            var parser  = new Parser(lexer);
            var program = parser.ParseCode();
            var env     = new ScriptyEnvironment();

            return(Evaluator.Eval(program, env));
        }