//Console.WriteLine("helo ha:"+args[0]); //普通输出 //Console.WriteLine("<WARN> 这是一个严重的问题。");//警告输出,黄字 //Console.WriteLine("<WARN|aaaa.cs(1)> 这是ee一个严重的问题。");//警告输出,带文件名行号 //Console.WriteLine("<ERR> 这是一个严重的问题。");//错误输出,红字 //Console.WriteLine("<ERR|aaaa.cs> 这是ee一个严重的问题。");//错误输出,带文件名 //Console.WriteLine("SUCC");//输出这个表示编译成功 //控制台输出约定了特别的语法 public static void Main(string[] args) { //set console Console.OutputEncoding = System.Text.Encoding.UTF8; var log = new DefLogger(); log.Log("Neo.Compiler.JVM console app v" + Assembly.GetEntryAssembly().GetName().Version); if (args.Length == 0) { log.Log("need one param for .class filename."); return; } string filename = args[0]; string onlyname = System.IO.Path.GetFileNameWithoutExtension(filename); //javaloader.ClassFile classFile = null; JavaModule module = new JavaModule(); byte[] bytes = null; bool bSucc = false; //convert and build try { var path = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; path = System.IO.Path.GetDirectoryName(path); module.LoadJar(System.IO.Path.Combine(path, "org.neo.smartcontract.framework.jar")); module.LoadClass(filename); var conv = new ModuleConverter(log); AntsModule am = conv.Convert(module); bytes = am.Build(); log.Log("convert succ"); } catch (Exception err) { log.Log("Convert Error:" + err.ToString()); return; } //write bytes try { string bytesname = onlyname + ".avm"; System.IO.File.Delete(bytesname); System.IO.File.WriteAllBytes(bytesname, bytes); log.Log("write:" + bytesname); bSucc = true; } catch (Exception err) { log.Log("Write Bytes Error:" + err.ToString()); return; } if (bSucc) { log.Log("SUCC"); } }
//Console.WriteLine("helo ha:"+args[0]); //普通输出 //Console.WriteLine("<WARN> 这是一个严重的问题。");//警告输出,黄字 //Console.WriteLine("<WARN|aaaa.cs(1)> 这是ee一个严重的问题。");//警告输出,带文件名行号 //Console.WriteLine("<ERR> 这是一个严重的问题。");//错误输出,红字 //Console.WriteLine("<ERR|aaaa.cs> 这是ee一个严重的问题。");//错误输出,带文件名 //Console.WriteLine("SUCC");//输出这个表示编译成功 //控制台输出约定了特别的语法 public static void Main(string[] args) { //set console Console.OutputEncoding = System.Text.Encoding.UTF8; var log = new DefLogger(); log.Log("Neo.Compiler.MSIL console app v" + Assembly.GetEntryAssembly().GetName().Version + " [DEBUGGER SUPPORT]"); if (args.Length == 0) { log.Log("need one param for DLL filename."); return; } string filename = args[0]; string onlyname = System.IO.Path.GetFileNameWithoutExtension(filename); string filepdb = filename.Replace(".dll", ".pdb"); // fix necessary when debugging the compiler via VS var path = Path.GetDirectoryName(filename); if (!string.IsNullOrEmpty(path)) { Directory.SetCurrentDirectory(path); } ILModule mod = new ILModule(); System.IO.Stream fs = null; System.IO.Stream fspdb = null; //open file try { fs = System.IO.File.OpenRead(filename); if (System.IO.File.Exists(filepdb)) { fspdb = System.IO.File.OpenRead(filepdb); } } catch (Exception err) { log.Log("Open File Error:" + err.ToString()); return; } //load module try { mod.LoadModule(fs, fspdb); } catch (Exception err) { log.Log("LoadModule Error:" + err.ToString()); return; } byte[] bytes = null; bool bSucc = false; //convert and build try { var conv = new ModuleConverter(log); AntsModule am = conv.Convert(mod); bytes = am.Build(filename); log.Log("convert succ"); } catch (Exception err) { log.Log("Convert Error:" + err.ToString()); return; } //write bytes try { string bytesname = onlyname + ".avm"; System.IO.File.Delete(bytesname); System.IO.File.WriteAllBytes(bytesname, bytes); log.Log("write:" + bytesname); bSucc = true; } catch (Exception err) { log.Log("Write Bytes Error:" + err.ToString()); return; } try { fs.Dispose(); if (fspdb != null) { fspdb.Dispose(); } } catch { } if (bSucc) { log.Log("SUCC"); } }
//Console.WriteLine("helo ha:"+args[0]); //普通输出 //Console.WriteLine("<WARN> 这是一个严重的问题。");//警告输出,黄字 //Console.WriteLine("<WARN|aaaa.cs(1)> 这是ee一个严重的问题。");//警告输出,带文件名行号 //Console.WriteLine("<ERR> 这是一个严重的问题。");//错误输出,红字 //Console.WriteLine("<ERR|aaaa.cs> 这是ee一个严重的问题。");//错误输出,带文件名 //Console.WriteLine("SUCC");//输出这个表示编译成功 //控制台输出约定了特别的语法 public static void Main(string[] args) { //set console Console.OutputEncoding = System.Text.Encoding.UTF8; var log = new DefLogger(); log.Log("Neo.Compiler.MSIL console app v" + Assembly.GetEntryAssembly().GetName().Version); if (args.Length == 0) { log.Log("need one param for DLL filename."); return; } string filename = args[0]; string onlyname = System.IO.Path.GetFileNameWithoutExtension(filename); string filepdb = onlyname + ".pdb"; ILModule mod = new ILModule(); System.IO.Stream fs = null; System.IO.Stream fspdb = null; //open file try { fs = System.IO.File.OpenRead(filename); if (System.IO.File.Exists(filepdb)) { fspdb = System.IO.File.OpenRead(filepdb); } } catch (Exception err) { log.Log("Open File Error:" + err.ToString()); return; } //load module try { mod.LoadModule(fs, fspdb); } catch (Exception err) { log.Log("LoadModule Error:" + err.ToString()); return; } byte[] bytes = null; bool bSucc = false; string jsonstr = null; //convert and build try { var conv = new ModuleConverter(log); AntsModule am = conv.Convert(mod); bytes = am.Build(); log.Log("convert succ"); try { var outjson = vmtool.FuncExport.Export(am); StringBuilder sb = new StringBuilder(); outjson.ConvertToStringWithFormat(sb, 0); jsonstr = sb.ToString(); log.Log("gen abi succ"); } catch (Exception err) { log.Log("gen abi Error:" + err.ToString()); } } catch (Exception err) { log.Log("Convert Error:" + err.ToString()); return; } //write bytes try { string bytesname = onlyname + ".avm"; System.IO.File.Delete(bytesname); System.IO.File.WriteAllBytes(bytesname, bytes); log.Log("write:" + bytesname); bSucc = true; } catch (Exception err) { log.Log("Write Bytes Error:" + err.ToString()); return; } try { string abiname = onlyname + ".abi.json"; System.IO.File.Delete(abiname); System.IO.File.WriteAllText(abiname, jsonstr); log.Log("write:" + abiname); bSucc = true; } catch (Exception err) { log.Log("Write abi Error:" + err.ToString()); return; } try { fs.Dispose(); if (fspdb != null) { fspdb.Dispose(); } } catch { } if (bSucc) { log.Log("SUCC"); } }