CompilerContext(CompilerParameters parameters, CompilerResults results) { this.Parameters = parameters; this.Results = results; this.CompilationUnits = new ArrayList<CompilationUnitNode>(); this.TypeBuilders = new ArrayList<TypeBuilder>(); this.Iterables = new HashMap<MethodBuilder, TypeBuilder>(); this.ConstructorBuilders = new ArrayList<MethodBuilder>(); this.CodeValidationContext = new CodeValidationContext(this); this.MethodGenerationContext = new MethodGenerationContext(); this.LambdaScopes = new HashMap<MethodBuilder, TypeBuilder>(); this.ConstantBuilder = new ConstantBuilder(this); this.PrivateAccessors = new HashMap<Object, MethodInfo>(); this.PrivateMutators = new HashMap<Object, MethodInfo>(); this.localFields = new HashMap<LocalMemberInfo, FieldInfo>(); }
private bool handleArguments(String[] arguments) { parameters = new CompilerParameters(); int i = 0; while (i < sizeof(arguments) && (arguments[i].startsWith("-"))) { int idx = arguments[i].indexOf(':'); var argument = arguments[i].substring(1); var parameter = ""; if (idx > 0) { argument = arguments[i].substring(1, idx); parameter = arguments[i].substring(idx + 1); } var option = Options[argument]; if (option == null) { System.out.println("Error: Unknown option: " + argument); return false; } switch (option) { case Annotatedlibs: { while (parameter.length() > 0) { idx = parameter.indexOf(';'); String file; if (idx >= 0) { file = parameter.substring(0, idx); parameter = parameter.substring(idx + 1); } else { file = parameter; parameter = ""; } if (!new File(file).exists()) { System.out.println(MISSING_FILE + file); return false; } parameters.AnnotatedLibraryPaths.add(file); } break; } case Classpath: { while (parameter.length() > 0) { idx = parameter.indexOf(';'); String file; if (idx >= 0) { file = parameter.substring(0, idx); parameter = parameter.substring(idx + 1); } else { file = parameter; parameter = ""; } if (!new File(file).exists()) { System.out.println(MISSING_FILE + file); return false; } parameters.ClassPath.add(file); } break; } case Define: { while (parameter.length() > 0) { idx = parameter.indexOf(';'); if (idx >= 0) { parameters.getSymbols().add(parameter.substring(0, idx)); parameter = parameter.substring(idx + 1); } else { parameters.getSymbols().add(parameter); parameter = ""; } } break; } case Doc: { parameters.DocumentationPath = parameter; break; } case Manifest: { manifestPath = parameter; if (!new File(manifestPath).exists()) { System.out.println(MISSING_FILE + manifestPath); return false; } break; } case Out: { outputPath = parameter; break; } case Resources: { resourcesPath = parameter; break; } case Help: { System.out.println(" Cnatural Compiler Options"); System.out.println(); foreach (var opt in OptionInfos) { System.out.print("-"); System.out.print(opt.Name); if (opt.Arguments != null) { System.out.print(":"); System.out.print(opt.Arguments); } System.out.println(); System.out.print("\t"); System.out.print(opt.Description); if (opt.ShortForm != null) { System.out.print(" (Short form: -"); System.out.print(opt.ShortForm); System.out.print(")"); } System.out.println(); System.out.println(); } break; } } i++; } while (i < sizeof(arguments)) { File file = new File(arguments[i]); if (!file.exists()) { System.out.println(MISSING_FILE + arguments[i]); return false; } if (file.isDirectory()) { System.out.println("Error: Argument is a directory: " + arguments[i]); return false; } sourceFiles.add(file); i++; } if (sourceFiles.size() == 0) { System.out.println("Error: No input file"); return false; } if (outputPath == null) { var absolutePath = sourceFiles[0].getAbsolutePath(); var dir = PathHelper.getDirectoryName(absolutePath); var filename = PathHelper.getFileNameWithoutExtension((absolutePath.endsWith(".cs"))? PathHelper.getFileNameWithoutExtension(absolutePath) : absolutePath); outputPath = PathHelper.combine(dir, filename + ".jar"); } System.out.println("Output: "+outputPath); return true; }