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); }
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"; }
public ActionResult Compile(CodeViewModel code) { var result = MyCompiler.Compile(code.CodeStr).ToString(); Console.WriteLine(result); return(Ok(result)); }
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)); } }
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); } }
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); } }
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); }