3

私は C コンパイラの作成に取り組んでいます。CodeDom を使用して C コードを C# でコンパイルできるかどうかを知る必要があります。現在、C# コードを C# Windows 形式でコンパイルするコードに従って作業していますか?

C言語のコードをコンパイルする簡単な方法はありますか?

using System.CodeDom.Compiler;
using System.Diagnostics;
using Microsoft.CSharp;
private void button1_Click(object sender, System.EventArgs e)
{
   CSharpCodeProvider codeProvider = new CSharpCodeProvider();
   ICodeCompiler icc = codeProvider.CreateCompiler();
   string Output = "Out.exe";
   Button ButtonObject = (Button)sender;

   textBox2.Text = "";
   System.CodeDom.Compiler.CompilerParameters parameters = new 
   CompilerParameters();
   //Make sure we generate an EXE, not a DLL
   parameters.GenerateExecutable = true;
   parameters.OutputAssembly = Output;
   CompilerResults results = icc.CompileAssemblyFromSource(parameters, textBox1.Text);

   if (results.Errors.Count > 0)
   {
       textBox2.ForeColor = Color.Red;
       foreach (CompilerError CompErr in results.Errors)
       {
           textBox2.Text = textBox2.Text +
                       "Line number " + CompErr.Line +
                       ", Error Number: " + CompErr.ErrorNumber +
                       ", '" + CompErr.ErrorText + ";" +
                       Environment.NewLine + Environment.NewLine;
       }
   }
   else
   {
       //Successful Compile
       textBox2.ForeColor = Color.Blue;
       textBox2.Text = "Success!";
       //If we clicked run then launch our EXE
       if (ButtonObject.Text == "Run") Process.Start(Output);
   }
}
4

2 に答える 2

3

あなたはコンパイラを作っていません。コンパイラへのインターフェイスを作成しています。いいえ、これには使えませんCodeDom。Cコンパイラにシェルアウトしないのはなぜですか? この目的に使用できるものがたくさんあります。キャプチャSTDOUT- コンパイラ出力の形式には一般的なガイドラインがあり、それらの解析はかなり単純な作業です。

C インタープリターの組み込みを検討することもできます。今、それは興味深いかもしれません。さらに興味深いのは、独自の C インタープリターを作成することです (コンパイラーよりも簡単に実行できます)。

于 2012-05-31T11:05:20.357 に答える