/// <summary> /// Builds the test parsers /// </summary> private void BuildTestParsers(string fixtureName, string testName) { // get all units from the tests List <Unit> units = new List <Unit>(); // add the unit for the expected tree parser Stream stream1 = typeof(Program).Assembly.GetManifestResourceStream("Hime.Tests.Driver.Resources.Fixture.gram"); Stream stream2 = typeof(CompilationTask).Assembly.GetManifestResourceStream("Hime.SDK.Sources.Input.HimeGrammar.gram"); Hime.SDK.Input.Loader loader = new Hime.SDK.Input.Loader(); loader.AddInputRaw(stream1); loader.AddInputRaw(stream2); List <Grammar> grammars = loader.Load(); foreach (Grammar grammar in grammars) { if (grammar.Name == "ExpectedTree") { units.Add(new Unit(grammar, "", Mode.Assembly, ParsingMethod.LALR1, "Hime.Tests.Generated", Modifier.Public)); break; } } // add the unit for the parsers foreach (Fixture fixture in fixtures) { if (fixtureName != null && fixture.Name != fixtureName) { continue; } foreach (Test test in fixture.Tests) { if (testName != null && test.Name != testName) { continue; } units.Add(test.GetUnit(fixture.Name)); } } // emit the artifacts (new EmitterForNet(reporter, units)).Emit(); File.Move("Parsers.dll", "parsers-net.dll"); (new EmitterForJava(reporter, units)).Emit(); File.Move("Parsers.jar", "parsers-java.jar"); EmitterForRust emitterForRust = new EmitterForRust(reporter, units, Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)), "runtime-rust")); emitterForRust.Emit(); File.Move("Parsers.crate", "parsers-rust.crate"); File.Move("Parsers" + emitterForRust.SuffixSystemAssembly, "parsers-rust" + emitterForRust.SuffixSystemAssembly); }
/// <summary> /// Adds a new data string as input /// </summary> /// <param name="data">The data string</param> public void AddInputRaw(string data) { loader.AddInputRaw(data); }