예제 #1
0
        public static string CompileProgram(string fname, bool is_dynamic)
        {
            try
            {
                _mokkosu = new Mokkosu.Main.Mokkosu();
                _mokkosu.AddSourceFile(fname);

                var name = Path.GetFileNameWithoutExtension(fname);
                _mokkosu.Compile(fname, is_dynamic);
                return(_mokkosu.GetVersionString() + "\n" + _mokkosu.GetOutput());
            }
            catch (Mokkosu.Utils.MError e)
            {
                if (_mokkosu == null)
                {
                    return("エラー:\n" + e.Message);
                }
                else
                {
                    return(_mokkosu.GetVersionString() + "\n" + _mokkosu.GetOutput() + "エラー:\n" + e.Message);
                }
            }
            catch (Exception e)
            {
                return("致命的なエラー:\n" + e.ToString());
            }
            finally
            {
                if (_mokkosu != null)
                {
                    _mokkosu.Close();
                }
            }
        }
예제 #2
0
        static int Main(string[] args)
        {
            var mokkosu = new Mokkosu.Main.Mokkosu();

            try
            {
                mokkosu.OutputVersion();
                Console.WriteLine();

                foreach (var fname in args)
                {
                    mokkosu.AddSourceFile(fname);
                }

                if (args.Length != 0)
                {
                    var name = Path.GetFileNameWithoutExtension(args.Last());
                    mokkosu.Compile(name, false);
                    Console.WriteLine(mokkosu.GetOutput());
                    mokkosu.SaveExe(name + ".exe");
                    Console.WriteLine("コンパイルに成功しました。\n");
                }
                return(0);
            }
            catch (Mokkosu.Utils.MError e)
            {
                Console.WriteLine(mokkosu.GetOutput());
                Console.WriteLine(e.Message);
                return(1);
            }
            catch (Exception e)
            {
                Console.WriteLine("致命的なエラー:");
                Console.WriteLine(e.ToString());
                return(2);
            }
        }
예제 #3
0
 public static string GetLogoString()
 {
     _mokkosu = new Mokkosu.Main.Mokkosu();
     return(_mokkosu.GetVersionString());
 }