Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            const string prompt = ">> ";

            WriteLine($"Hello {Environment.UserName}! This is the Monkey programming language!");
            WriteLine("Feel free to type in commands");

            // The environment must survive across inputs and remain for as long
            // as the REPL is running. Otherwise it wouldn't be possible for
            // variables and functions to survive across inputs.
            var env = new MonkeyEnvironment();

            while (true)
            {
                Write(prompt);
                var line    = ReadLine();
                var lexer   = new Lexer(line);
                var parser  = new Parser(lexer, false);
                var program = parser.ParseProgram();

                if (parser.Errors.Count > 0)
                {
                    PrintParserErrors(parser.Errors);
                    continue;
                }

                var evaluated = Evaluator.Eval(program, env);
                if (evaluated != null)
                {
                    WriteLine(evaluated.Inspect());
                }
            }
        }
Ejemplo n.º 2
0
    private static IMonkeyObject TestEval(string source)
    {
        var lexer   = new Lexer(source);
        var parser  = new Parser(lexer, false);
        var program = parser.ParseProgram();
        var env     = new MonkeyEnvironment();

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