コード例 #1
0
ファイル: Program.cs プロジェクト: sebgod/hime
        /// <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);
        }
コード例 #2
0
 /// <summary>
 /// Adds a new data string as input
 /// </summary>
 /// <param name="data">The data string</param>
 public void AddInputRaw(string data)
 {
     loader.AddInputRaw(data);
 }