Example #1
0
        public void Resolve_Cenario_MenosBasico()
        {
            var grammar   = new JavaScriptHalfGrammar();
            var inputCode = @"
                // VAR_DEFINITION
                var varName;

                // VAR ASSIGNMENT
                varName = 0;

                // VAR_DEFINITION_AND_ASSIGNMENT
                var varName = 0;

                // FUNCTION_DEFINITION
                function funcName() {
                }

                // FUNCTION_CALL
                funcName();
            ";

            var compiler = new MyCompiler <JavaScriptHalfObject>(
                grammar,
                JavaScriptHalfObject.Emitter
                );

            var js = compiler.Compile(inputCode);

            Assert.NotNull(js);
        }
Example #2
0
    public static async Task <string> RunScript(string script)
    {
        string CsCode = @"
                using System.Text;
                namespace CompileBlazorInBlazor.Demo
                {
                    public class RunClass
                    {
                        public string Run(string name, int count)
                        {
                            var sb = new StringBuilder();
                            for (int i = 0; i < count; i++)
                            {
                                sb.AppendLine($""{i}) Hello, {name}!"");
                            }
                            return sb.ToString();
                        }
                    }
                }
                ";

        MyCompiler compiler = new MyCompiler();
        string     result   = await compiler.CompileAndRun(CsCode);

        Console.WriteLine("result completed");
        Console.WriteLine(result);
        return(result);
        // return "smurf";
    }
Example #3
0
        public ActionResult Compile(CodeViewModel code)
        {
            var result = MyCompiler.Compile(code.CodeStr).ToString();

            Console.WriteLine(result);
            return(Ok(result));
        }
Example #4
0
        private static void RunCompiler(string baseDirectory, string filePath, DiagnosticBag diagnostics, ImmutableArray <SourceGenerator> generators)
        {
            var compiler = new MyCompiler(
                baseDirectory: baseDirectory,
                args: new[] { "/nologo", "/preferreduilang:en", "/t:library", filePath },
                generators: generators);
            var errorLogger = new DiagnosticBagErrorLogger(diagnostics);
            var builder     = new StringBuilder();

            using (var writer = new StringWriter(builder))
            {
                compiler.RunCore(writer, errorLogger, default(CancellationToken));
            }
        }
Example #5
0
        public void RunAnalyzersAfterGeneratingSource()
        {
            string text =
                @"class C
{
}";

            using (var directory = new DisposableDirectory(Temp))
            {
                var file = directory.CreateFile("c.cs");
                file.WriteAllText(text);

                int analyzerCalls = 0;
                ImmutableArray <SyntaxTree> treesToAnalyze;
                var analyzer = new MyAnalyzer(c =>
                {
                    analyzerCalls++;
                    Assert.True(treesToAnalyze.IsDefault);
                    treesToAnalyze = ImmutableArray.CreateRange(c.Compilation.SyntaxTrees);
                });

                int generatorCalls = 0;
                var generator      = new MyGenerator(c =>
                {
                    generatorCalls++;
                    c.AddCompilationUnit("__c", CSharpSyntaxTree.ParseText("class __C { }"));
                });

                var compiler = new MyCompiler(
                    baseDirectory: directory.Path,
                    args: new[] { "/nologo", "/preferreduilang:en", "/t:library", file.Path },
                    analyzers: ImmutableArray.Create <DiagnosticAnalyzer>(analyzer),
                    generators: ImmutableArray.Create <SourceGenerator>(generator));

                var builder = new StringBuilder();
                using (var writer = new StringWriter(builder))
                {
                    compiler.Run(writer);
                }
                var output = builder.ToString();
                // No errors from analyzer.
                Assert.Equal("", output);

                Assert.Equal(1, generatorCalls);
                Assert.Equal(1, analyzerCalls);
                Assert.Equal(2, treesToAnalyze.Length);
            }
        }
Example #6
0
        public void RunAnalyzersAfterGeneratingSource()
        {
            string text =
@"class C
{
}";
            using (var directory = new DisposableDirectory(Temp))
            {
                var file = directory.CreateFile("c.cs");
                file.WriteAllText(text);

                int analyzerCalls = 0;
                ImmutableArray<SyntaxTree> treesToAnalyze;
                var analyzer = new MyAnalyzer(c =>
                {
                    analyzerCalls++;
                    Assert.True(treesToAnalyze.IsDefault);
                    treesToAnalyze = ImmutableArray.CreateRange(c.Compilation.SyntaxTrees);
                });

                int generatorCalls = 0;
                var generator = new MyGenerator(c =>
                {
                    generatorCalls++;
                    c.AddCompilationUnit("__c", CSharpSyntaxTree.ParseText("class __C { }"));
                });

                var compiler = new MyCompiler(
                    baseDirectory: directory.Path,
                    args: new[] { "/nologo", "/preferreduilang:en", "/t:library", file.Path },
                    analyzers: ImmutableArray.Create<DiagnosticAnalyzer>(analyzer),
                    generators: ImmutableArray.Create<SourceGenerator>(generator));

                var builder = new StringBuilder();
                using (var writer = new StringWriter(builder))
                {
                    compiler.Run(writer);
                }
                var output = builder.ToString();
                // No errors from analyzer.
                Assert.Equal("", output);

                Assert.Equal(1, generatorCalls);
                Assert.Equal(1, analyzerCalls);
                Assert.Equal(2, treesToAnalyze.Length);
            }
        }
Example #7
0
        public void Resolve_Cenario_Basico()
        {
            var grammar   = new CalcTwoNumbersGrammar();
            var inputCode = @"
                            437
                             + 
                            734   ";

            var compiler = new MyCompiler <CalcTwoNumbersObject>(
                grammar,
                CalcTwoNumbersObject.Emitter
                );

            var calc   = compiler.Compile(inputCode);
            var result = calc.CalcNumbers();

            Assert.Equal((uint)1171, result);
        }