Exemple #1
0
        public static string Run(string source, ref StringBuilder emitter)
        {
            var context = Runtime.Context.Create();
            var emitter2 = emitter;

            var astBuilder = new Compiler.AstGenerator();
            var etGenerator = new Compiler.EtGenerator();

            var scope = Scope.CreateGlobal(context);

            Func<object, object> emit = (obj) =>
            {
                emitter2.Append(JsTypeConverter.ToString(obj));
                return null;
            };

            scope.Global(
                "emit",
                emit
            );

            context.SetupGlobals(scope);

            var astNodes = astBuilder.Build(source);
            var compiled = etGenerator.Build(astNodes, context);

            compiled(scope);

            return emitter.ToString();
        }
Exemple #2
0
        public static string Run(string source)
        {
            var emitter = new StringBuilder();
            var context = Runtime.Context.Create();

            var astBuilder = new Compiler.AstGenerator();
            var etGenerator = new Compiler.EtGenerator();

            var scope = Scope.CreateGlobal(context);

            Func<object, object> emit = (obj) => { return emitter.Append(JsTypeConverter.ToString(obj)); };
            scope.Global("emit", emit);

            Action<object> assert = (obj) => { Assert.AreEqual((object)true, obj); };
            scope.Global("assert", assert);

            Action<object, object, object> assertEqual = (a, b, msg) => { Assert.AreEqual(a, b, (string)msg); };
            scope.Global("assertEqual", assertEqual);

            Action<object, object> assertFalse = (obj, msg) => { Assert.IsFalse((bool)obj, (string)msg); };
            scope.Global("assertFalse", assertFalse);

            Action<object, object> assertTrue = (obj, msg) => { Assert.IsTrue((bool)obj, (string)msg); };
            scope.Global("assertTrue", assertTrue);

            context.SetupGlobals(scope);

            var astNodes = astBuilder.Build(source);
            var compiled = etGenerator.Build(astNodes, context);

            compiled(scope);

            return emitter.ToString();
        }
Exemple #3
0
        //TODO: fix pretty-print of AST tree for all nodes
        static void Main(string[] args)
        {
            var context = new Context();
            var astBuilder = new Compiler.AstGenerator();
            var etGenerator = new Compiler.EtGenerator();
            var astNodes = astBuilder.Build("Testing.js", Encoding.UTF8);
            var compiled = etGenerator.Build(astNodes, context);
            var globals = Scope.CreateGlobal(context);

            context.SetupGlobals(globals);

            globals.Global(
                "println",
                typeof(HelperFunctions).GetMethod("PrintLine")
            );

            compiled(globals);
        }
Exemple #4
0
 public static Action<Scope> Compile(string source)
 {
     var astBuilder = new Compiler.AstGenerator();
     var etGenerator = new Compiler.EtGenerator();
     return etGenerator.Build(astBuilder.Build(source), Runtime.Context.Create());
 }
Exemple #5
0
 public static List<IronJS.Compiler.Ast.Node> BuildAst(string source)
 {
     var astBuilder = new Compiler.AstGenerator();
     return astBuilder.Build(source);
 }