Esempio n. 1
0
        protected void ParseLibrary(params string[] files)
        {
            Options       = new DriverOptions();
            ParserOptions = new ParserOptions2();

            var testsPath = GeneratorTest.GetTestsDirectory("Native");

            ParserOptions.addIncludeDirs(testsPath);

            Options.Headers.AddRange(files);

            Driver = new Driver(Options, new TextDiagnosticPrinter())
            {
                ParserOptions = this.ParserOptions
            };

            foreach (var module in Driver.Options.Modules)
            {
                module.LibraryName = "Test";
            }
            Driver.Setup();
            Driver.BuildParseOptions();
            if (!Driver.ParseCode())
            {
                throw new Exception("Error parsing the code");
            }

            AstContext = Driver.Context.ASTContext;
        }
Esempio n. 2
0
 public Driver(DriverOptions options, IDiagnostics diagnostics)
 {
     Options       = options;
     Diagnostics   = diagnostics;
     Project       = new Project();
     ParserOptions = new ParserOptions2();
 }
Esempio n. 3
0
        public BindingContext(IDiagnostics diagnostics, DriverOptions options,
                              ParserOptions2 parserOptions = null)
        {
            Options       = options;
            Diagnostics   = diagnostics;
            ParserOptions = parserOptions;

            Symbols   = new SymbolContext();
            Delegates = new Dictionary <Function, DelegatesPass.DelegateDefinition>();

            TypeDatabase = new TypeMapDatabase();
            TypeDatabase.SetupTypeMaps(Options.GeneratorKind);

            TranslationUnitPasses = new PassBuilder <TranslationUnitPass>(this);
            GeneratorOutputPasses = new PassBuilder <GeneratorOutputPass>(this);
        }
        private static IList <string> GetDependencies(string library)
        {
            var parserOptions = new ParserOptions2();

            parserOptions.addLibraryDirs(GeneratorTest.GetTestsDirectory("Native"));
            var driverOptions = new DriverOptions();

            driverOptions.Libraries.Add(library);
            var driver = new Driver(driverOptions, new TextDiagnosticPrinter())
            {
                ParserOptions = parserOptions
            };

            foreach (var module in driver.Options.Modules)
            {
                module.LibraryName = "Test";
            }
            driver.Setup();
            Assert.IsTrue(driver.ParseLibraries());
            var dependencies = driver.Context.Symbols.Libraries[0].Dependencies;

            return(dependencies);
        }