📄 form1.cs
字号:
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnOK_Click(object sender, System.EventArgs e)
{
if(InCode.Text!="")
{
//inputCode=InCode.Text; //输入代码字符
string sw="";
string[] line=InCode.Lines; //按文本框的行取
int h=0;int t=0;
int k=0;int u=0;
while(h<line.Length)
{
for(h=k;h<line.Length;h++)
{
t=line[h].IndexOf("/*");
if(t!=-1)
break;
}
if(t!=-1)
{
for(k=h;k<line.Length;k++)
{
u=line[k].IndexOf("*/");
if(u!=-1)
break;
}
if(u==-1)
{
MessageBox.Show("找不到与'/*'匹配的'*/'"+"行"+(h+1)+"列"+(t+1));
listBoxNo2++;
listBox2.Items.Add(listBoxNo2.ToString()+" "+"错误#1"+" "+"/*");
line[h]=line[h].Substring(0,t);h++;
while(h<line.Length)
line[h++]=" ";
}
else
{
int x1=h,y1=t,x2=k,y2=u+1;
if(x1==x2)
{
line[x1]=line[x1].Remove(y1,y2-y1+1);
line[x1]=line[x1].Insert(y1," ");
}
else
{
line[x1]=line[x1].Substring(0,y1);
x1++;
while(x1<x2)
{
line[x1]=" ";
x1++;
}
line[x1]=line[x1].Remove(0,y2+1);
}
}
h++;
}
}
for(int j=0;j<line.Length;j++) //按行处理输入串
{
sw=line[j]+"$"; //第j行字符,$为终结符
int i=0,start=0,record=0;
while(i<sw.Length-1)
{
while(sw[i]==' '||sw[i]==' ')
i++;
start=i;
if(IsLetter(sw[i]))
{
record=i;
i++;
while(IsLetter(sw[i])||IsDigit(sw[i]))
i++;
if(CheckLength(sw.Substring(record,i-record))&&CheckString(sw.Substring(record,i-record))) //长度小于8并且在数据库查找到为关键字,复制到 cs,并且显示在输出框
{
//MessageBox.Show("关键字");
listBoxNo2++;
listBox2.Items.Add(listBoxNo2.ToString()+" "+"关键字"+" "+sw.Substring(record,i-record));
listBoxNo++;
listBox1.Items.Add(listBoxNo.ToString()+" "+"关键字"+" "+sw.Substring(record,i-record));
}
else
{
//MessageBox.Show("标识符");
listBoxNo2++;
listBox2.Items.Add(listBoxNo2.ToString()+" "+"标识符"+" "+sw.Substring(record,i-record));
CodeListNo++;
CodeList.Items.Add(CodeListNo.ToString()+" "+"标识符"+" "+sw.Substring(record,i-record));
//标识符
}
}
else if(IsDigit(sw[i]))
{
record=i;
i++;
while(IsDigit(sw[i]))
i++;
//MessageBox.Show("数字");
listBoxNo2++;
listBox2.Items.Add(listBoxNo2.ToString()+" "+"数字"+" "+sw.Substring(record,i-record));
NumListNo++;
NumList.Items.Add(NumListNo.ToString()+" "+"数字"+" "+sw.Substring(record,i-record));
//数字
}
else if(sw[i]=='('||sw[i]==')'||sw[i]=='['||sw[i]==']'||sw[i]=='.'||sw[i]=='~'
||sw[i]==','||sw[i]==';'||sw[i]=='{'||sw[i]=='}')
{
//MessageBox.Show("运算符");
listBoxNo2++;
listBox2.Items.Add(listBoxNo2.ToString()+" "+"运算符"+" "+sw[i]);
listBoxNo++;
listBox1.Items.Add(listBoxNo.ToString()+" "+"运算符"+" "+sw[i]);
i++;
}
else if(sw[i]=='='||sw[i]=='%'||sw[i]=='^'||sw[i]=='!'||sw[i]=='*'||sw[i]=='/')
{
//MessageBox.Show("运算符");
listBoxNo++;listBoxNo2++;
if(sw[i+1]=='=')
{
listBox2.Items.Add(listBoxNo2.ToString()+" "+"运算符"+" "+sw[i]+sw[i+1]);
listBox1.Items.Add(listBoxNo.ToString()+" "+"运算符"+" "+sw[i]+sw[i+1]);
i++;
}
else
{
listBox2.Items.Add(listBoxNo2.ToString()+" "+"运算符"+" "+sw[i]);
listBox1.Items.Add(listBoxNo.ToString()+" "+"运算符"+" "+sw[i]);
}
i++;
}
else if(sw[i]=='<'||sw[i]=='>'||sw[i]=='+'||sw[i]=='-'||sw[i]=='&'||sw[i]=='|')
{
//MessageBox.Show("运算符");
listBoxNo++;listBoxNo2++;
if(sw[i+1]==sw[i]||sw[i+1]=='=')
{
listBox2.Items.Add(listBoxNo2.ToString()+" "+"运算符"+" "+sw[i]+sw[i+1]);
listBox1.Items.Add(listBoxNo.ToString()+" "+"运算符"+" "+sw[i]+sw[i+1]);
i++;
}
else
{
listBox2.Items.Add(listBoxNo2.ToString()+" "+"运算符"+" "+sw[i]);
listBox1.Items.Add(listBoxNo.ToString()+" "+"运算符"+" "+sw[i]);
}
i++;
}
else
{ if(i==sw.Length-1)
break;
if(i==start)
MessageBox.Show("无法识别的符号"+"行"+(j+1)+"列"+(i+1));
listBoxNo2++;
listBox2.Items.Add(listBoxNo2.ToString()+" "+"错误#0"+" "+sw[i]);
i++;//报错,无法识别的字符
}
start=i;
}
}//end for
}//end if
else
{
MessageBox.Show("什么都没有输入!"); //空输入
}
}
private void btnExit_Click(object sender, System.EventArgs e) //退出
{
Application.Exit();
}
private void Form1_Load(object sender, System.EventArgs e)
{
InCode.Focus();
listBoxNo=0;
CodeListNo=0;
NumListNo=0;
}
private bool IsLetter(char c)
{
if((c<='z'&&c>='a')||(c<='Z'&&c>='A'))
return true;
else
return false;
}
private bool IsDigit(char c)
{
if(!(c<='9'&&c>='0'))
return false;
else
return true;
}
//判断字段是否小于8
private bool CheckLength(string input) //长度
{
if(input.Length<=8)
return true;
else
return false;
}
//判断是否保留字、符号表保留字
private bool CheckString(string input) //字符串查找,判断是否为关键字
{
dbConnect.Open();
string QuerySQL="SELECT * FROM tables WHERE char='"+input+"'";
try
{
OleDbCommand myCommand=new OleDbCommand(QuerySQL,dbConnect);
OleDbDataReader dr=null;
dr=myCommand.ExecuteReader();
if(dr.Read())
{
dbConnect.Close();
return true;
}
else
{
dbConnect.Close();
return false;
}
}
catch(Exception ee)
{
MessageBox.Show(ee.ToString());
}
dbConnect.Close();
return false;
}
private void btnClear_Click(object sender, System.EventArgs e) //清除
{
InCode.Text="";
CodeList.Items.Clear();
NumList.Items.Clear();
listBox1.Items.Clear();
listBox2.Items.Clear();
listBoxNo=0;
listBoxNo2=0;
CodeListNo=0;
NumListNo=0;
}
private void menuItem2_Click(object sender, System.EventArgs e)
{
string Fname;
//设置过滤器属性
openFileDialog1.Filter="文本文件(*.txt)|*.txt|RTF格式文件(*.RTF)|*.RTF";
openFileDialog1.FilterIndex=1;//设置当前文件过滤器
openFileDialog1.Title="打开文件";//设置对话框的标题
openFileDialog1.InitialDirectory=Application.StartupPath;//初始目录设为启动路径
openFileDialog1.RestoreDirectory=true;//自动恢复初始目录
openFileDialog1.ShowDialog();//弹出打开文件对话框
Fname=openFileDialog1.FileName;//获取打开的文件名
if(Fname!="")
{
if(openFileDialog1.FilterIndex==1)
InCode.LoadFile(Fname,RichTextBoxStreamType.PlainText);//文本文件
else
InCode.LoadFile(Fname,RichTextBoxStreamType.RichText);//RTF文件
}
}
private void menuItem3_Click(object sender, System.EventArgs e)
{
Application.Exit();
}
private void menuItem5_Click(object sender, System.EventArgs e)
{
string Fname;
saveFileDialog1.Filter="文本文件(*.txt)|*.txt";
saveFileDialog1.Title="保存文件";
saveFileDialog1.InitialDirectory=Application.StartupPath;
saveFileDialog1.RestoreDirectory=true;
saveFileDialog1.ShowDialog();
Fname=saveFileDialog1.FileName;
if(Fname!="")
InCode.SaveFile(Fname,RichTextBoxStreamType.PlainText);
}
private void button2_Click(object sender, System.EventArgs e)
{
InCode.Text="";
}
private void button1_Click(object sender, System.EventArgs e)
{
CodeList.Items.Clear();
NumList.Items.Clear();
listBox1.Items.Clear();
listBox2.Items.Clear();
listBoxNo=0;
listBoxNo2=0;
CodeListNo=0;
NumListNo=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -