/ ************************************************* *********************************
*
*用途:Conventer C + +到C#
方法:使用C#编程语言
*作者:2005510040 - 凯末尔轪ybakan
*日期:07.06.2009
*假设:我不需要任何假设!
*
************************************************** ******************************** /
使用系统;
引用;
引用;
结;
云计算;
使用System.Text;
使用System.Windows.Forms;
使用System.IO;
命名空间_005510040_Conventer
{
/ ************************************************* ****************************
/计划建设3个部分。图书馆,课堂,主...
/ - > codeMain()函数
/图书馆 - > codeLibrary()函数
/ - >类codeClass()函数
************************************************** *************************** /
公众部分类FormCon的:表格
{
/ *初始化全局变量* /
新的RichTextBox的和RichTextBox中rTxtCs =(); / /执行C#代码的富文本框
私人字符串strSaveFileName; / /保存文件名
私人字符串类名=“未申报”,/ /如果存在类,把类名
私人和布尔bLibrary =假; / /这部分库
私人布尔bClass = TRUE; / /这部分类
私人布尔bMain = TRUE; / /这部分主要
私人布尔bUsingSystem = FALSE; / /如果程序正在使用的系统命令
私人和布尔bPublicPrefix =假; / /如果存在公共变量
私人和布尔bPrivatePrefix =假; / /如果存在私有变量
私人和布尔bProtectedPrefix =假; / /如果受保护的变量存在
私人字符串strPrefix的=“”; / /前缀类类型的公共,私人,proctected
私人诠释iOpenCloseParNum = 0; / /判断打开关闭paranthesis
/ /初始化表单组件
公共FormCon()
{
在InitializeComponent();
}
/ /关闭程序
私人的无效btnClose_Click(对象发件人,EventArgs五)
{
this.Close();
}
/ ************************************************* ****************************
目的:ConvertToCSharp功能
输入:按钮参数
返回值:返回值无关。
************************************************** *************************** /
私人的无效btnConvertFromCpp_Click(对象发件人,EventArgs五)
{
/ /转到ConvertToCSharp功能
rTxtCSharpCode.Text:= ConvertToCSharp(rTxtCppCode)文本;
}
/ ************************************************* ****************************
用途:打开c + +的文件类型和负载的丰富文本文件
输入:按钮参数
返回值:返回值无关。它推到堆栈的值
************************************************** *************************** /
私人的无效btnOpenFileCpp_Click(对象发件人,EventArgs五)
{
的字符串chosenFile =“”;
/ /判断打开文件对话框属性
研究openFileCSharp.Title =“打开一个C + +文件”;
openFileCSharp.FileName =“”;
openFileCSharp.Filter =“C + +文件| *。CPP”;
如果(openFileCSharp.ShowDialog()= DialogResult.Cancel)
{
/ /如果用户想打开,然后单击“确定”
chosenFile openFileCSharp.FileName;
rTxtCppCode.LoadFile(chosenFile,RichTextBoxStreamType.PlainText);
strSaveFileName = chosenFile;
}
}
/ ************************************************* ****************************
目的:柬埔寨人民党库转换到C#库
输入:strLine中(一行丰富的文本框)
返回:true - >“确定”,通过主或类的,假 - >去库
************************************************** *************************** /
字符串strLine的私人:BOOL codeLibrary()
{
/ /转换包括<iostream>使用系统;
如果(strLine.Trim()。StartsWith(“#”)&&(strLine.ToLower(),含有(“<iostream>”)))
{
(bUsingSystem == FALSE)rTxtCs.Text + =“使用”系统“+”\ n“;
bUsingSystem = TRUE;
返回false;
}
/ /将使用System.Windows.Forms#楼得分;
如果(strLine.Trim()。StartsWith(“#”)&& strLine.ToLower()。包含(“<windows.h>”)== TRUE)
{
rTxtCs.Text + =“使用System.Windows.Forms”+“\ n”;
返回false;
}
/ /将包括字符串使用System.Text;
如果(strLine.Trim()StartsWith(“#”)。的&& strLine.ToLower()。(“<字符串>”)== TRUE)
{
rTxtCs.Text + =“使用System.Text”+“\ n”;
返回false;
}
/ /转换为空白使用命名空间std;
((strLine.Trim()。(“使用命名空间std”)| | strLine.Trim()。(“使用std ::”))== TRUE)
{
rTxtCs.Text + =“”;
返回false;
}
返回true;
}
/ ************************************************* ****************************
目的:CPP类的代码转换到C#类代码
输入:strLine中(一行丰富的文本框)
返回:true - >“确定”,通过主要的,假的 - >去上课
************************************************** *************************** /
私人的布尔codeClass(字符串strLine的)
{
整数艾朗;
/ /转换std :: string的字符串;
(strLine.Trim()包含(“std :: string的”)== TRUE)
{
strLine的strLine.Replace(“性病::字符串”,“字符串”);
}
/ /转换(变量),如果(变量!= 0)
,如果(strLine.Trim()。(“如果”)== TRUE,&& strLine.Trim(的)包含(“==”)== FALSE,&& strLine.Trim()。(“=”)==假)
{
开始= strLine.IndexOf(“(”);
完成= strLine.IndexOf(“)”);
诠释计数=完成 - 开始; / /可变长度
字符串变量= strLine.Substring(开始+ 1,计数-1);
strLine的= strLine.Replace(VAR,VAR +“= 0”);
}
/ /转换类的类名类
如果(strLine.Trim()包含(“类”)== TRUE,&& strLine.Trim()。(“{”)== FALSE)。
{
className的strLine.Substring(6);
rTxtCs.Text + = strLine.Trim()+“\ n”;
返回false;
}
/ /转换类的类名{类
/ / {
如果(strLine.Trim()包含(“类”)== TRUE,&& strLine.Trim()。(“{”)== TRUE)
{
艾朗= strLine.IndexOf(“{”);
艾朗=艾朗 - 7;
className的= strLine.Substring(6,艾朗1);
艾朗strLine.IndexOf(“{”);
strLine的:= strLine.Remove(艾朗);
rTxtCs.Text + = strLine.Trim的()+“\ n”+“{\ n”;
iOpenCloseParNum + +;
返回false;
}
/ /转换的COUT到Console.Write或了Console.Writeline
((strLine.Trim()。StartsWith(“法院”)== TRUE)| |(strLine.Trim()。StartsWith(“std :: cout的”)== TRUE))
{
strLine的strLine.Replace(“std :: cout的<<”,“\ tConsole.Write(”);
strLine的strLine.Replace(“法院”,“\ tConsole.Write(”);
strLine的strLine.Replace(“<<性病:: endl”,“+ \”\ \ n \“);
strLine中= strLine.Replace(“<< endl”,“+ \”\ \ n \“);
strLine的strLine.Replace(“std :: cout的<<”,“\ tConsole.Write(”);
strLine的strLine.Replace(“法院”,“\ tConsole.Write(”);
strLine中= strLine.Replace(“<< endl”,“+ \”\ \ n \“);
strLine的strLine.Replace(“<<性病:: endl”,“+ \”\ \ n \“);
strLine中= strLine.Replace(“;”,“);”);
strLine中= strLine.Replace(“<<”,“+”);
rTxtCs.Text + = strLine中+“\ n”;
返回false;
}
/ /转换的COUT Console.Read或Console.Readline
((strLine.Trim()包含(“CIN”)== TRUE)| |(strLine.Trim()。StartsWith(“CIN >>”)== TRUE))
{
strLine的strLine.Replace(“的std :: CIN”“,”“);
strLine的strLine.Replace(“的std :: CIN”“,”“);
strLine中= strLine.Replace(“霉素>>”,“”);
strLine中= strLine.Replace(“;”,“”);
strLine中= strLine.Replace(“霉素>>”,“”);
strLine的strLine中+“= Console.ReadLine();”;
rTxtCs.Text + =“\ t”+ strLine中+“\ n”;
返回false;
}
/ /如果strLine的开始};,末级
如果(strLine.Trim()StartsWith(“}”)== TRUE)。
{
/ /判断类的类型
bPublicPrefix = FALSE;
bPrivatePrefix = FALSE;
bProtectedPrefix = FALSE;
返回true;
}
/ /如果strLine的开始与公众:
如果(strLine.Trim()StartsWith(“公共”)== TRUE)。
{
/ /判断类的类型
strPrefix的=“\ t公众”;
bPublicPrefix = TRUE;
bPrivatePrefix = FALSE;
bProtectedPrefix = FALSE;
返回false;
}
/ /如果strLine的开始与私人:
如果(strLine.Trim()StartsWith(“私人”)== TRUE)。
{
/ /判断类的类型
strPrefix的=“\ t私人”;
bPrivatePrefix = TRUE;
bPublicPrefix = FALSE;
bProtectedPrefix = FALSE;
返回false;
}
/ /如果strLine的启动保护:
如果(strLine.Trim()。StartsWith(“保护”)== TRUE)
{
/ /判断类的类型
strPrefix的= \ tprotected“;
bProtectedPrefix = TRUE;
bPrivatePrefix = FALSE;
bPublicPrefix = FALSE;
返回false;
}
/ /如果strLine中包含{
(strLine.Trim()包含(“{”)== TRUE)
{
rTxtCs.Text + = strLine中+“\ n”;
iOpenCloseParNum + +;
返回false;
}
/ /如果strLine中包含}
(strLine.Trim()。(“}”)== TRUE)
{
rTxtCs.Text + = strLine中+“\ n”;
iOpenCloseParNum - ;
返回false;
}
/ /如果存在法线除公共,私有,保护
((bProtectedPrefix == TRUE | | bPrivatePrefix == TRUE | | bPublicPrefix == TRUE))
{
如果(iOpenCloseParNum <3)
{
(iOpenCloseParNum%2 == 0)
的rTxtCs.Text + = strLine中+“\ n”; / /无的CLAS类型前缀
其他
rTxtCs.Text + = strPrefix的+ strLine.Trim的()+“\ n”; / /的CLAS类型前缀
}
其他
{
rTxtCs.Text + = strLine中+“\ n”;
}
返回false;
}
返回true;
}
/ ************************************************* ****************************
目的:人民党主代码转换到C#的主要代码
输入:strLine中(一行丰富的文本框)
返回:true - >“完成”程序,假 - >去上课
************************************************** *************************** /
私人的布尔codeMain(字符串strLine的)
{
整数艾朗;
strLine的开始{/ /如果,转换
如果(strLine.Trim()。StartsWith(“{”)== TRUE)
{
rTxtCs.Text + =“\ t”+ strLine中+“\ n”;
iOpenCloseParNum + +;
返回false;
}
/ / std :: string的转换为字符串
(strLine.Trim()包含(“std :: string的”)== TRUE)
{
strLine的strLine.Replace(“性病::字符串”,“字符串”);
}
/ /转换(变量),如果(变量!= 0)
,如果(strLine.Trim()。(“如果”)== TRUE,&& strLine.Trim(的)包含(“==”)== FALSE,&& strLine.Trim()。(“=”)==假)
{
开始= strLine.IndexOf(“(”);
完成= strLine.IndexOf(“)”);
诠释计数=完成 - 开始; / /变量计数
字符串变量= strLine.Substring(开始+ 1,计数 - 1);
strLine的= strLine.Replace(VAR,VAR +“= 0”);
}
/ /如果strLine的开始},程序结束
如果(strLine.Trim()StartsWith(“}”)== TRUE)。
{
返回false;
}
/ /如果strLine的开始},减少iOpenCloseParNum;
(strLine.Trim()。(“}”)== TRUE)
{
rTxtCs.Text + =“\ t”+ strLine中+“\ n”;
iOpenCloseParNum - ;
返回false;
}
/ /转换的COUT到Console.Write或了Console.Writeline
((strLine.Trim()。StartsWith(“法院”)== TRUE)| |(strLine.Trim()。StartsWith(“std :: cout的”)== TRUE))
{
strLine的strLine.Replace(“std :: cout的<<”,“\ tConsole.Write(”);
strLine的strLine.Replace(“法院”,“\ tConsole.Write(”);
strLine的strLine.Replace(“<<性病:: endl”,“+ \”\ \ n \“);
strLine中= strLine.Replace(“<< endl”,“+ \”\ \ n \“);
strLine的strLine.Replace(“std :: cout的<<”,“\ tConsole.Write(”);
strLine的strLine.Replace(“法院”,“\ tConsole.Write(”);
strLine中= strLine.Replace(“<< endl”,“+ \”\ \ n \“);
strLine的strLine.Replace(“<<性病:: endl”,“+ \”\ \ n \“);
strLine中= strLine.Replace(“;”,“);”);
strLine中= strLine.Replace(“<<”,“+”);
rTxtCs.Text + = strLine中+“\ n”;
返回false;
}
/ /转换的COUT Console.Read或Console.Readline
((strLine.Trim()包含(“CIN”)== TRUE)| |(strLine.Trim()。StartsWith(“CIN >>”)== TRUE))
{
strLine的strLine.Replace(“的std :: CIN”“,”“);
strLine的strLine.Replace(“的std :: CIN”“,”“);
strLine中= strLine.Replace(“霉素>>”,“”);
strLine中= strLine.Replace(“;”,“”);
strLine中= strLine.Replace(“霉素>>”,“”);
strLine的strLine中+“= Console.ReadLine();”;
rTxtCs.Text + =“\ t”+ strLine中+“\ n”;
返回false;
}
/ /转换className.subField的为className CL =新的类名();
((strLine.Trim()。StartsWith(类名)== TRUE)&&(strLine.Trim()。(“。”)== FALSE))
{
strLine中= strLine.Replace(“;”,“=新的”)+ className的+“();”;
rTxtCs.Text + =“\ t”+ strLine中+“\ n”;
返回false;
}
/ /将主要情况
(strLine.Trim()。(“主要()== TRUE)
{
/ /如果它contins的{,增加iOpenCloseParNum“
如果(strLine.Trim()。包含(“{”))iOpenCloseParNum + +;
rTxtCs.Text + =“\ t”;
/ /例如无效的主要 - >主
诠释foundS1 strLine.Trim()。的indexOf(“主”);
strLine中= strLine.Remove(0,foundS1);
/ /主 - >静态无效的主要
/ /() - >(字符串[] ARGS)
/ /(argc,焦炭*的argv) - >(字串[] args)
串strBackup strLine.Trim()。更换(“主”,“静态无效的主要”)+“\ n”;
strBackup strBackup.Replace(“()”,“(字串[] args)”);
strBackup = strBackup.Replace(“(argc,焦炭*的argv)”,“(字串[] args)”);
/ /如果包含,删除,然后把分线
(strLine.Trim()。(“{”))
{
来到艾朗strBackup.Trim()。的indexOf(“{”);
strBackup:= strBackup.Remove(艾朗);
rTxtCs.Text + = strBackup的+“\ n”+“\ t {\ n”;
}
其他
{
rTxtCs.Text + = strBackup的;
}
返回false;
}
/ /把其他线路不改变
(strLine.Trim()(“(”)== FALSE)
{
rTxtCs.Text + =“\ t”+ strLine中+“\ n”;
返回false;
}
返回true;
}
/ ************************************************* ****************************
目的:CPP到C#编程功能...
cpp的代码输入:丰富的文本博尔
返回:转换cpp的代码为C#编程
************************************************** *************************** /
RichTextBox的rTxtCpp私人:RichTextBox的ConvertToCSharp()
{
/ *检查命令行* /
布尔bAccept = FALSE;
* / / * ------读一步一步用线-------
(INT I = 0;我<rTxtCpp.Lines.Length,我+ +)
{
/ /将空行
如果(rTxtCpp.Lines [I]。TRIM()==“”)
{
rTxtCs.Text + = rTxtCpp.Lines的[I]。TRIM()+“\ n”;
}
/ /转换/ /命令
否则,如果(rTxtCpp.Lines [I]。TRIM()。StartsWith(“/ /”)== TRUE)
{
rTxtCs.Text + = rTxtCpp.Lines的[我] +“\ n”;
}
/ /转换/ ** /命令
否则,如果(rTxtCpp.Lines [I]。TRIM()StartsWith(“/ *”)== TRUE && rTxtCpp.Lines [I]。TRIM()。(“* /”)== FALSE)。
{
rTxtCs.Text + = rTxtCpp.Lines的[我] +“\ n”;
bAccept = TRUE;
}
/ /转换/ ** /命令
否则,如果(rTxtCpp.Lines [I]。,剪裁()。StartsWith(“/ *”)== TRUE && rTxtCpp.Lines [I]。TRIM()包含(“* /”)== TRUE)
{
rTxtCs.Text + = rTxtCpp.Lines的[我] +“\ n”;
}
/ /转换/ ** /命令检查bAccept价值
否则,如果(bAccept == TRUE && rTxtCpp.Lines [I]。TRIM()。包含(“* /”)== FALSE)
{
rTxtCs.Text + = rTxtCpp.Lines的[我] +“\ n”;
bAccept = TRUE;
}
/ /转换/ ** /命令检查bAccept价值
否则,如果(bAccept == TRUE && rTxtCpp.Lines [I]。TRIM()。包含(“/”)== TRUE)
{
rTxtCs.Text + = rTxtCpp.Lines的[I]。TRIM()+“\ n”;
bAccept = FALSE;
}
/ /转换图书馆,等级,主要代码
其他
{
/ /如果bLibary是假的,转换bLibrary码
如果(bLibrary == FALSE)
{
bLibrary = codeLibrary(rTxtCpp.Lines [I]);
(bLibrary == TRUE)bClass = FALSE;
}
/ /,如果bClass是假的,转换bClass代码
(bClass == FALSE)
{
bClass = codeClass(rTxtCpp.Lines [I]);
(bClass == TRUE)bMain = FALSE;
}
/ /如果bMain是假的,转换bMain码
(bMain == FALSE)
{
bMain = codeMain(rTxtCpp.Lines [I]);
}
}
}
/ /最后的代码,添加\ n} ... 因为在C + +中,我们已经删除了};
如果(iOpenCloseParNum == 1)
{
rTxtCs.Text + =“\ n”;
}
返回rTxtCs;
}
/ ************************************************* ****************************
目的:保存转换后的CPP文件中。另存为CSHARP
输入:保存文件对话框参数
返回值:返回值无关。
************************************************** *************************** /
私人的无效btnSaveFileCSharp_Click(对象发件人,EventArgs五)
{
流MyStream的;
saveFileCSharp.Filter =“C#文件(*。CS)| *。条款|头文件(*。H)| * H”;
saveFileCSharp.FileName strSaveFileName;
saveFileCSharp.RestoreDirectory = TRUE;
如果(saveFileCSharp.ShowDialog()== DialogResult.OK)
{
((MyStream的saveFileCSharp.OpenFile())!= NULL)
{
StreamWriter的wText =新的StreamWriter的(MyStream的);
wText.Write(rTxtCSharpCode.Text);
myStream.Close();
}
}
}
/ ************************************************* ****************************
目的:如果用户新的代码转换,清洗和初始化所有的变量
输入:按钮参数
返回值:返回值无关。
************************************************** *************************** /
私人的无效btnClear_Click(对象发件人,EventArgs五)
{
rTxtCppCode.Text =“”;
rTxtCSharpCode.Text =“”;
rTxtCppCode.Text =“”;
rTxtCs.Text =“”;
/ * - 转换CPP到C#编程 - * /
strSaveFileName =“”;
类名=“未申报”;
bLibrary = FALSE;
bClass = TRUE;
bMain = TRUE;
bUsingSystem = FALSE;
bPublicPrefix = FALSE;
bPrivatePrefix = FALSE;
bProtectedPrefix = FALSE;
strPrefix的=“”;
iOpenCloseParNum = 0;
}
}
}