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; }
public Driver(DriverOptions options, IDiagnostics diagnostics) { Options = options; Diagnostics = diagnostics; Project = new Project(); ParserOptions = new ParserOptions2(); }
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); }