Ejemplo n.º 1
0
	public static Parser CreateForFile (string file, Driver driver)
	{
	    FileStream fs = new FileStream (file, FileMode.Open, FileAccess.Read);
	    BufferedStream bs = new BufferedStream (fs);
	    StreamReader reader = new StreamReader (bs);
	    
	    return new Parser (reader, file, driver);
	}
Ejemplo n.º 2
0
		public int Launch () {
			Parser.DebugParser = debug_parser;

			if (RemainingArguments.Length == 0) {
				DoAbout ();
				return 1;
			}

			if (keyfile == null) {
				Console.Error.WriteLine ("A keypair file must be specified to sign the assembly.");
				return 1;
			}

			if (assembly_version == null) {
				Console.Error.WriteLine ("An assembly version must be given to install the assembly.");
				return 1;
			}

			if (!File.Exists (keyfile)) {
				Console.Error.WriteLine ("The specified keypair file \"{0}\" does not exist.", keyfile);
				return 1;
			}


			if (outfile == null) {
				string inbase = Path.GetFileNameWithoutExtension (RemainingArguments[0]);

				// hacky ...
				outfile = "MBuildDynamic." + inbase + ".dll";
			}

			switch (source_language) {
			case "csharp":
				prov = new CSharpCodeProvider();
				resource_arg = "/resource:";
				break;
			case "vb":
				prov = new VBCodeProvider ();
				resource_arg = "/resource:"; // ???
				break;
			default:
				Console.Error.WriteLine ("Unknown source language \"{0}\" -- cannot continue.",
						   source_language);
				return 1;
			}

			Driver driver = new Driver ();

			foreach (string s in refs)
			    if (driver.LoadAssembly (s))
				return 1;

			for (int i = 0; i < RemainingArguments.Length; i++) {
			    if (driver.ParseFile (RemainingArguments[i]))
				return 1;
			}

			if (driver.Prepare ())
			    return 2;

			if (debug_codegen)
			    return DoDebugCodegen (driver.GetUnits (assembly_version, keyfile));

			foreach (string nfile in natives)
			    if (driver.AddNativeFile (nfile))
				return 1;

			return DoCompilePass (driver.GetUnits (assembly_version, keyfile));
		}
Ejemplo n.º 3
0
	public static bool DebugParser; // hack hack

	// public

	public Parser (StreamReader reader, string file, Driver driver)
	{
	    lexer = new Tokenizer (reader, file);
	    this.driver = driver;
	}
Ejemplo n.º 4
0
	public TypeResolveContext (Driver driver)
	{
	    this.driver = driver;
	}