Esempio n. 1
0
        public static Assembly CompileCode(string code, CompilationTarget target = CompilationTarget.Library)
        {
            var parsed = new LightParser().Parse(code);

            AssertEx.That(() => !parsed.HasErrors);

            var processor = TestEnvironment.Container.Resolve <LightProcessor>();

            processor.Process(parsed.Root, new ProcessingOptions {
                ReferencedAssemblies = { typeof(CompilationHelper).Assembly }
            });

            var assemblyName         = GetAssemblyName();
            var compilationArguments = new CompilationArguments {
                AssemblyName    = assemblyName,
                AssemblyVersion = new Version(0, 1, 0, 0),
                Target          = target
            };

            var stream   = new MemoryStream();
            var compiler = TestEnvironment.Container.Resolve <LightCompiler>();

            compiler.Compile((AstRoot)parsed.Root, stream, compilationArguments);

            var bytes    = stream.ToArray();
            var assembly = Assembly.Load(bytes);

            WriteAssemblyOnDiskAndPEVerify(assembly, bytes, target);
            return(assembly);
        }
Esempio n. 2
0
        public static void IsParsedTo <TAstElement>(string code, Func <IAstElement, TAstElement> getElementFromResult, Expression <Func <TAstElement, bool> > condition)
        {
            var result = new LightParser().Parse(code);

            AssertEx.That(() => !result.HasErrors);

            var element = getElementFromResult(result.Root);

            Assert.IsNotNull(element);
            AssertEx.That(Expression.Lambda <Func <bool> >(Expression.Invoke(condition, Expression.Constant(element))));
        }
Esempio n. 3
0
        private static void AssertIsParsed(string programName)
        {
            var code = Resource.ReadAllText(typeof(Resource), "Programs." + programName);
            var parsed = new LightParser().Parse(code);

            Assert.IsFalse(
                parsed.HasErrors,
                "Errors while parsing: {0}{1}",
                    Environment.NewLine,
                    string.Join(Environment.NewLine, parsed.Messages)
            );
        }
Esempio n. 4
0
        private static void AssertIsParsed(string programName)
        {
            var code   = Resource.ReadAllText(typeof(Resource), "Programs." + programName);
            var parsed = new LightParser().Parse(code);

            Assert.IsFalse(
                parsed.HasErrors,
                "Errors while parsing: {0}{1}",
                Environment.NewLine,
                string.Join(Environment.NewLine, parsed.Messages)
                );
        }
Esempio n. 5
0
        public static void IsParsedTo(string code, string expectedResult, bool includeExpressionType = false, bool parenthiseAll = false)
        {
            var parser = new LightParser();
            var result = parser.Parse(code);

            AssertEx.That(() => !result.HasErrors);

            var resultString = new AstToCodeTransformer {
                UseParenthesesInAllExpressions = parenthiseAll
            }.Transform(result.Root);
            var resultExpression = result.Root as IAstExpression;

            if (resultExpression != null && includeExpressionType)
            {
                resultString = resultString + ": " + new TypeFormatter(new BuiltInTypeMap()).Format(resultExpression.ExpressionType);
            }

            Assert.AreEqual(expectedResult, resultString);
        }
Esempio n. 6
0
        public static Assembly CompileCode(string code, CompilationTarget target = CompilationTarget.Library)
        {
            var parsed = new LightParser().Parse(code);
            AssertEx.That(() => !parsed.HasErrors);

            var processor = TestEnvironment.Container.Resolve<LightProcessor>();
            processor.Process(parsed.Root);

            var assemblyName = GetAssemblyName();
            var compilationArguments = new CompilationArguments {
                AssemblyName = assemblyName,
                AssemblyVersion = new Version(0, 1, 0, 0),
                Target = target
            };

            var stream = new MemoryStream();
            var compiler = TestEnvironment.Container.Resolve<LightCompiler>();
            compiler.Compile((AstRoot)parsed.Root, stream, compilationArguments);

            var bytes = stream.ToArray();
            var assembly = Assembly.Load(bytes);
            WriteAssemblyOnDiskAndPEVerify(assembly, bytes, target);
            return assembly;
        }
Esempio n. 7
0
 public LightLanguageService(LightGrammar grammar, LightParser parser, LightProcessor processor)
 {
     this.grammar   = grammar;
     this.parser    = parser;
     this.processor = processor;
 }
Esempio n. 8
0
 public LightLanguageService(LightGrammar grammar, LightParser parser, LightProcessor processor)
 {
     this.grammar = grammar;
     this.parser = parser;
     this.processor = processor;
 }
Esempio n. 9
0
        private static void SetupCompiler()
        {
            var builder = new ContainerBuilder();
            builder.RegisterAssemblyModules(typeof(LightProcessor).Assembly);
            builder.RegisterAssemblyModules(typeof(LightCompiler).Assembly);
            var container = builder.Build();

            parser = container.Resolve<LightParser>();
            processor = container.Resolve<LightProcessor>();
            compiler = container.Resolve<LightCompiler>();

            typeFormatter = container.Resolve<TypeFormatter>();
        }