亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.cs

?? SharpDevelop2.0.0 c#開發免費工具
?? CS
字號:
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
//     <version>$Revision: 915 $</version>
// </file>

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using NRefactoryToBooConverter;
using Boo.Lang.Compiler;
using Boo.Lang.Compiler.Ast;

namespace StandaloneConverter
{
	class MainClass
	{
		/// <returns>
		/// 0 = conversion successful
		/// 1 = internal error
		/// 2 = invalid command line parameters
		/// 3 = no command line parameters
		/// 4 = conversion error
		/// </returns>
		public static int Main(string[] args)
		{
			Console.WriteLine("Standalone C# to Boo converter");
			Console.WriteLine("(C) Daniel Grunwald, 2005");
			Console.WriteLine();
			return new MainClass().Run(args);
		}
		
		bool overwriteFiles = false;
		
		public int Run(string[] args)
		{
			try {
				bool failed = false;
				string outputdir = null;
				List<string> input = new List<string>();
				for (int i = 0; i < args.Length; i++) {
					string arg = args[i];
					switch (arg.ToLower()) {
						case "--help":
						case "-?":
						case "/?":
							ShowHelp();
							return 0;
						case "-o":
						case "--output":
							outputdir = args[++i];
							break;
						case "--overwrite":
						case "--force":
						case "-f":
							overwriteFiles = true;
							break;
						case "--version":
							Console.WriteLine("Version " + typeof(MainClass).Assembly.GetName().Version.ToString());
							return 0;
						case "--keepredundanttypereferences":
							removeRedundantTypeReferences = false;
							break;
						case "--noprimitivenames":
							simplifyTypeNames = false;
							break;
						default:
							if (arg.StartsWith("-")) {
								Console.WriteLine("Invalid argument: " + arg);
								failed = true;
							} else {
								input.Add(arg);
							}
							break;
					}
				}
				if (failed)
					return 2;
				if (input.Count == 0) {
					Console.WriteLine("No input(s) specified.");
					Console.WriteLine("Use the parameter '--help' to display the possible command line arguments.");
					return 3;
				}
				if (Convert(input, outputdir)) {
					Console.WriteLine();
					Console.WriteLine("Conversion successful.");
					return 0;
				} else {
					Console.WriteLine();
					Console.WriteLine("Conversion failed.");
					return 4;
				}
			} catch (Exception ex) {
				Console.WriteLine(ex);
				return 1;
			}
		}
		
		void ShowHelp()
		{
			Console.Write(Path.GetFileName(typeof(MainClass).Assembly.Location));
			Console.WriteLine(" [-o outputdirectory] [switches] input1 input2 ...");
			Console.WriteLine();
			Console.WriteLine("An input parameter can be either a C# or VB.NET file or a directory.");
			Console.WriteLine("When a directory is specified, all .cs and .vb files inside that");
			Console.WriteLine("directory are converted recursivly.");
			Console.WriteLine();
			Console.WriteLine(" --output (short: -o)");
			Console.WriteLine("    Specifies the output directory to store the generated files in.");
			Console.WriteLine("    When no output directory is specified, the generated files are stored");
			Console.WriteLine("    in the directory of the source files.");
			Console.WriteLine();
			Console.WriteLine("Switches:");
			Console.WriteLine(" --overwrite or --force (short: -f)");
			Console.WriteLine("    Overwrite existing .boo files.");
			Console.WriteLine(" --keepredundanttypereferences");
			Console.WriteLine("    Don't remove type declarations like 'as void' or in local variable declarations where the type is clearly inferred.");
			Console.WriteLine(" --noPrimitiveNames");
			Console.WriteLine("    Use the fully type names (System.Int32) instead of the short names (int).");
			Console.WriteLine(" --help (short: -? or /?)");
			Console.WriteLine("    Shows this help text");
		}
		
		bool simplifyTypeNames = true;
		bool removeRedundantTypeReferences = true;
		
		ConverterSettings ApplySettings(string fileName, CompilerErrorCollection errors, CompilerWarningCollection warnings)
		{
			ConverterSettings settings = new ConverterSettings(fileName, errors, warnings);
			settings.SimplifyTypeNames = simplifyTypeNames;
			settings.RemoveRedundantTypeReferences = removeRedundantTypeReferences;
			return settings;
		}
		
		bool Convert(List<string> inputs, string outputdir)
		{
			bool success = true;
			foreach (string input in inputs) {
				if (Directory.Exists(input)) {
					success &= ConvertDirectory(input, GetOutputName(outputdir, input));
				} else {
					success &= ConvertFile(input, GetOutputName(outputdir, input));
				}
			}
			return success;
		}
		
		string GetOutputName(string outputdir, string input)
		{
			return outputdir == null ? input : Path.Combine(outputdir, Path.GetFileName(input));
		}
		
		bool ConvertDirectory(string inputdir, string outputdir)
		{
			bool success = true;
			foreach (string file in Directory.GetFiles(inputdir, "*.cs")) {
				success &= ConvertFile(file, Path.Combine(outputdir, Path.GetFileName(file)));
			}
			foreach (string file in Directory.GetFiles(inputdir, "*.vb")) {
				success &= ConvertFile(file, Path.Combine(outputdir, Path.GetFileName(file)));
			}
			foreach (string dir in Directory.GetDirectories(inputdir)) {
				success &= ConvertDirectory(dir, Path.Combine(outputdir, Path.GetFileName(dir)));
			}
			return success;
		}
		
		bool ConvertFile(string input, string output)
		{
			try {
				return ConvertFileInternal(input, Path.ChangeExtension(output, ".boo"));
			} catch (Exception ex) {
				Console.WriteLine("Error converting " + input + ":");
				Console.WriteLine("  " + ex.Message);
				return false;
			}
		}
		
		bool ConvertFileInternal(string input, string output)
		{
			string directory = Path.GetDirectoryName(output);
			if (directory.Length > 0) {
				if (!Directory.Exists(directory)) {
					Directory.CreateDirectory(directory);
				}
			}
			bool isFailed = false;
			if (!overwriteFiles && File.Exists(output)) {
				FailFile(ref isFailed, input, "The output file '{0}' already exists.", output);
				return false;
			}
			try {
				CompilerErrorCollection errors = new CompilerErrorCollection();
				CompilerWarningCollection warnings = new CompilerWarningCollection();
				Module module;
				IList<ICSharpCode.NRefactory.Parser.ISpecial> specials;
				CompileUnit compileUnit = new CompileUnit();
				using (StreamReader r = OpenFile(input)) {
					module = Parser.ParseModule(compileUnit, r, ApplySettings(input, errors, warnings), out specials);
				}
				foreach (CompilerError error in errors) {
					FailFile(ref isFailed, input, error.ToString());
				}
				if (!isFailed && warnings.Count > 0) {
					Console.WriteLine(input + ":");
					foreach (CompilerWarning warning in warnings) {
						Console.WriteLine("  " + warning.ToString());
					}
				}
				using (StreamWriter w = new StreamWriter(output, false, Encoding.UTF8)) {
					foreach (CompilerError error in errors) {
						w.WriteLine("ERROR: " + error.ToString());
					}
					if (errors.Count > 0)
						w.WriteLine();
					foreach (CompilerWarning warning in warnings) {
						w.WriteLine("# WARNING: " + warning.ToString());
					}
					if (warnings.Count > 0)
						w.WriteLine();
					BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w);
					if (module != null) {
						printer.OnModule(module);
					}
					printer.Finish();
				}
			} catch (Exception ex) {
				FailFile(ref isFailed, input, ex);
			}
			return !isFailed;
		}
		
		void FailFile(ref bool isFailed, string input, Exception ex)
		{
			FailFile(ref isFailed, input, "Internal error:");
			CompilerError cerr = ex as CompilerError;
			if (cerr != null)
				Console.WriteLine(cerr.ToString(true));
			else
				Console.WriteLine(ex.ToString());
		}
		
		void FailFile(ref bool isFailed, string input, string message, params object[] args)
		{
			if (!isFailed) {
				isFailed = true;
				Console.WriteLine(input + " failed:");
			}
			if (args.Length == 0) {
				Console.WriteLine("  " + message);
			} else {
				Console.WriteLine("  " + message, args);
			}
		}
		
		#region Open file with encoding autodetection
		StreamReader OpenFile(string fileName)
		{
			FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
			if (fs.Length > 3) {
				// the autodetection of StreamReader is not capable of detecting the difference
				// between ISO-8859-1 and UTF-8 without BOM.
				int firstByte = fs.ReadByte();
				int secondByte = fs.ReadByte();
				switch ((firstByte << 8) | secondByte) {
					case 0x0000: // either UTF-32 Big Endian or a binary file; use StreamReader
					case 0xfffe: // Unicode BOM (UTF-16 LE or UTF-32 LE)
					case 0xfeff: // UTF-16 BE BOM
					case 0xefbb: // start of UTF-8 BOM
						// StreamReader autodetection works
						fs.Position = 0;
						return new StreamReader(fs);
					default:
						return AutoDetect(fs, (byte)firstByte, (byte)secondByte);
				}
			} else {
				return new StreamReader(fs);
			}
		}
		
		StreamReader AutoDetect(FileStream fs, byte firstByte, byte secondByte)
		{
			int max = (int)Math.Min(fs.Length, 500000); // look at max. 500 KB
			const int ASCII = 0;
			const int Error = 1;
			const int UTF8  = 2;
			const int UTF8Sequence = 3;
			int state = ASCII;
			int sequenceLength = 0;
			byte b;
			for (int i = 0; i < max; i++) {
				if (i == 0) {
					b = firstByte;
				} else if (i == 1) {
					b = secondByte;
				} else {
					b = (byte)fs.ReadByte();
				}
				if (b < 0x80) {
					// normal ASCII character
					if (state == UTF8Sequence) {
						state = Error;
						break;
					}
				} else if (b < 0xc0) {
					// 10xxxxxx : continues UTF8 byte sequence
					if (state == UTF8Sequence) {
						--sequenceLength;
						if (sequenceLength < 0) {
							state = Error;
							break;
						} else if (sequenceLength == 0) {
							state = UTF8;
						}
					} else {
						state = Error;
						break;
					}
				} else if (b >= 0xc2 && b < 0xf5) {
					// beginning of byte sequence
					if (state == UTF8 || state == ASCII) {
						state = UTF8Sequence;
						if (b < 0xe0) {
							sequenceLength = 1; // one more byte following
						} else if (b < 0xf0) {
							sequenceLength = 2; // two more bytes following
						} else {
							sequenceLength = 3; // three more bytes following
						}
					} else {
						state = Error;
						break;
					}
				} else {
					// 0xc0, 0xc1, 0xf5 to 0xff are invalid in UTF-8 (see RFC 3629)
					state = Error;
					break;
				}
			}
			fs.Position = 0;
			switch (state) {
				case ASCII:
					// when the file seems to be ASCII, we read it using the user-specified encoding
					// so it is saved again using that encoding.
					return new StreamReader(fs, GetDefaultEncoding());
				case Error:
					return new StreamReader(fs, GetDefaultEncoding());
				default:
					return new StreamReader(fs);
			}
		}
		
		Encoding GetDefaultEncoding()
		{
			Encoding encoding = Encoding.Default;
			int codepage = encoding.CodePage;
			if (codepage == 65001 || codepage == 65000 || codepage == 1200 || codepage == 1201) {
				return Encoding.GetEncoding("ISO-8859-1");
			} else {
				return encoding;
			}
		}
		#endregion
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费高清在线视频一区·| 蜜乳av一区二区三区| 欧美成人乱码一区二区三区| 成人中文字幕电影| 麻豆精品一二三| 亚洲夂夂婷婷色拍ww47| 国产日韩欧美高清在线| 欧美高清一级片在线| 91丨porny丨国产| 国产一区二区三区观看| 日韩经典一区二区| 亚洲精品国产品国语在线app| 久久久午夜精品| 777xxx欧美| 精品视频全国免费看| 成人av在线一区二区三区| 韩国精品免费视频| 日韩av中文字幕一区二区三区| 亚洲欧美另类在线| 国产精品卡一卡二| 国产欧美日韩三区| 久久久久久久久久久电影| 精品少妇一区二区三区免费观看 | 色婷婷香蕉在线一区二区| 九九在线精品视频| 久草中文综合在线| 激情综合色综合久久综合| 日韩影院在线观看| 日本麻豆一区二区三区视频| 午夜精品国产更新| 亚洲444eee在线观看| 伊人性伊人情综合网| 亚洲欧美日韩国产手机在线| 亚洲天堂av一区| 亚洲精品videosex极品| 一区二区三区美女| 亚洲成人www| 午夜电影久久久| 丝袜美腿亚洲综合| 免费日本视频一区| 麻豆成人av在线| 国产精品888| a美女胸又www黄视频久久| 99re在线精品| 在线一区二区三区做爰视频网站| 色悠久久久久综合欧美99| 91精品91久久久中77777| 91福利国产精品| 在线观看中文字幕不卡| 欧美日韩一二区| 91精品国产免费| 精品卡一卡二卡三卡四在线| 久久免费视频色| 蜜臀av性久久久久蜜臀aⅴ流畅| 日日夜夜免费精品| 裸体一区二区三区| 国产美女一区二区| 成人精品视频一区| 一本久久精品一区二区| 欧美美女一区二区在线观看| 欧美videos大乳护士334| 久久精品综合网| 一区二区三区资源| 日本麻豆一区二区三区视频| 国产伦精品一区二区三区视频青涩 | 欧美激情艳妇裸体舞| 成人欧美一区二区三区小说| 一区二区日韩av| 日本色综合中文字幕| 国产一区二区视频在线播放| www.成人在线| 欧美片网站yy| 丁香亚洲综合激情啪啪综合| 欧美日韩精品欧美日韩精品一| 欧美视频一二三区| 欧美日韩在线电影| 日韩免费看的电影| 中文字幕日韩精品一区| 亚洲chinese男男1069| 国产高清不卡二三区| 日本高清不卡aⅴ免费网站| 日韩一级精品视频在线观看| 欧美国产一区二区在线观看| 亚洲一区自拍偷拍| 东方aⅴ免费观看久久av| 欧美二区三区的天堂| 中文字幕免费观看一区| 免费在线看成人av| 色中色一区二区| 久久久精品免费网站| 亚洲福利一二三区| 成人黄色网址在线观看| 日韩一区二区三区视频| 亚洲欧洲99久久| 国产一区二区伦理片| 7777精品伊人久久久大香线蕉的 | 亚洲一区欧美一区| 国产在线精品不卡| 色偷偷久久人人79超碰人人澡| 精品国一区二区三区| 亚洲精选视频免费看| 国产精品一区二区久久精品爱涩 | 欧美三区在线视频| 欧美国产日韩精品免费观看| 青青草成人在线观看| 色94色欧美sute亚洲13| 国产亚洲va综合人人澡精品| 日韩高清不卡在线| 欧洲精品视频在线观看| 中文字幕 久热精品 视频在线| 美洲天堂一区二卡三卡四卡视频 | 中文字幕+乱码+中文字幕一区| 免费在线观看日韩欧美| 欧美日韩一区二区三区四区 | 国产人久久人人人人爽| 五月天久久比比资源色| 91美女视频网站| 中文在线资源观看网站视频免费不卡| 精品影视av免费| 欧美一级午夜免费电影| 日韩中文字幕亚洲一区二区va在线 | 日本91福利区| 777奇米四色成人影色区| 天天色图综合网| 欧美日韩国产区一| 亚洲无线码一区二区三区| 欧美主播一区二区三区| 一区二区在线观看视频在线观看| 99精品1区2区| 亚洲激情男女视频| 色激情天天射综合网| 亚洲免费三区一区二区| 91女厕偷拍女厕偷拍高清| 国产精品国产三级国产aⅴ原创| 成人蜜臀av电影| 国产精品免费av| av亚洲精华国产精华| 亚洲天天做日日做天天谢日日欢| 99久久精品99国产精品| 亚洲男同性恋视频| 欧美主播一区二区三区| 肉肉av福利一精品导航| 日韩网站在线看片你懂的| 韩日av一区二区| 国产欧美日韩视频在线观看| 99久久婷婷国产综合精品电影| 亚洲视频一区二区在线| 欧美日韩中文另类| 青青草一区二区三区| 久久久欧美精品sm网站| 成人激情黄色小说| 一区二区三区资源| 欧美一级艳片视频免费观看| 国产综合色视频| 国产精品网站在线观看| 欧美在线一区二区三区| 日本午夜精品视频在线观看| 久久久久久久久久看片| 北条麻妃国产九九精品视频| 亚洲主播在线播放| 日韩欧美国产wwwww| hitomi一区二区三区精品| 亚洲综合小说图片| 日韩欧美亚洲国产精品字幕久久久| 国内精品免费在线观看| 亚洲欧美一区二区三区国产精品| 欧美高清性hdvideosex| 国产精品996| 亚洲国产毛片aaaaa无费看 | 久久精品一二三| av在线不卡观看免费观看| 天天综合日日夜夜精品| 国产午夜久久久久| 欧美美女一区二区三区| 国产成人精品影视| 亚洲高清不卡在线| 久久青草国产手机看片福利盒子| 一本一道波多野结衣一区二区| 日韩黄色在线观看| 18成人在线观看| 日韩视频免费直播| 色婷婷一区二区三区四区| 久久疯狂做爰流白浆xx| 伊人夜夜躁av伊人久久| 国产午夜精品一区二区| 欧美精品vⅰdeose4hd| www..com久久爱| 国产一区二区三区免费在线观看 | 亚洲一区二区三区四区中文字幕| 欧美成人在线直播| 91国内精品野花午夜精品| 国产精品88888| 美女精品自拍一二三四| 亚洲综合视频在线观看| 国产精品家庭影院| 久久久午夜电影| 日韩欧美久久一区| 精品污污网站免费看| 成人精品视频.| 极品少妇xxxx精品少妇|