public CodeProcessorModule()
        {
            Get("/", _ =>
            {
                return(View["Editor"]);
            });
            Post("/processCode", (parameters) =>
            {
                /*
                 * var postDataStream = Request.Body;
                 * var postDataReader = new StreamReader(postDataStream);
                 * var rawPostData = postDataReader.ReadToEnd();
                 */

                var code        = Request.Form["code"];
                var compileMode = Request.Form["compileMode"];

                //Tokenize the code
                var tokenizer = new Tokenizer(code);
                var tokens    = tokenizer.Tokenize();

                //Parse the tokenized code, and create an AST
                var parser = new Parser(tokens);
                var ast    = parser.ParseToAst();

                if (compileMode == "ast")
                {
                    //Just give back the ast
                    var astJson = JsonConvert.SerializeObject(ast);
                    return(astJson);
                }
                else if (compileMode == "compiler")
                {
                    //Use compiler
                    var compiler           = new FlameScriptCompiler(ast);
                    var compiledProgram    = compiler.CompileProgram();
                    var compiledProgramb64 = Convert.ToBase64String(compiledProgram);
                    return(compiledProgramb64);
                }
                return("Compile mode not specified.");
            });
        }
Esempio n. 2
0
        private static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("No input file specified");
                return;
            }
            var scriptPath  = args[0];
            var useCompiler = args.Length > 1 && args[1] == "--compiler";

            var code = File.ReadAllText(scriptPath);

            //Tokenize the code
            var tokenizer = new Tokenizer(code);
            var tokens    = tokenizer.Tokenize();

            //Parse the tokenized code, and create an AST
            var parser = new Parser(tokens);
            var ast    = parser.ParseToAst();

            if (!useCompiler)
            {
                //Use interpreter

                //Create an interpreter and run the code
                var interpreter = new FlameScriptInterpreter(ast);
                interpreter.DefineFunction("print", new Action <string>(Console.WriteLine));
                interpreter.ExecuteProgram();
            }
            else
            {
                //Use compiler
                var compiler             = new FlameScriptCompiler(ast);
                var compiledProgramBytes = compiler.CompileProgram();
            }
        }