⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 此为词法分析程序中的程序清单
💻 CPP
📖 第 1 页 / 共 3 页
字号:
                                           Form1->StringGrid1->Cells[1][x]="无 \"}\" 字";
                                           Form1->StringGrid1->Cells[0][x]=x;
                                           if(ssj==0)
                                           fprintf(fp2,"%10d,     error,     error,       error,     error,%10c\n",x,ch);
                                           x++;
                                           return p;
                                          }
                                          else
                                          {
                                           Form1->Edit6->Text=ch;
                                           Form1->StringGrid1->Cells[5][x]=ch;
                                           Form1->StringGrid1->Cells[4][x]="10010001";
                                           Form1->StringGrid1->Cells[3][x]="界符";
                                           Form1->StringGrid1->Cells[2][x]="";
                                           Form1->StringGrid1->Cells[1][x]='0';
                                           Form1->StringGrid1->Cells[0][x]=x;
                                           Form1->Edit6->Text=ch;
                                           if(ssj==0)
                                           fprintf(fp2,"%10d,         0,          ,        界符,  10010010,%10c\n",x,ch);
                                           x++;
                                           break;
                                          }
          }
          if(ch=='}')
          {
                                          if(find4(p)==0)                 //检验" }"是否匹配
                                          {
                                           Form1->StringGrid1->Cells[5][x]="}";
                                           Form1->StringGrid1->Cells[4][x]="error";
                                           Form1->StringGrid1->Cells[3][x]="字符串匹配";
                                           Form1->StringGrid1->Cells[2][x]="符串与 \"}\"";
                                           Form1->StringGrid1->Cells[1][x]="无\"{\" 字";
                                           Form1->StringGrid1->Cells[0][x]=x;
                                           if(ssj==0)
                                           fprintf(fp2,"%10d,     error,     error,       error,     error,%10c\n",x,ch);
                                           x++;
                                           return p;
                                          }
                                          else
                                          {
                                           Form1->StringGrid1->Cells[5][x]=ch;
                                           Form1->StringGrid1->Cells[4][x]=10010011;
                                           Form1->StringGrid1->Cells[3][x]="界符";
                                           Form1->StringGrid1->Cells[2][x]="";
                                           Form1->StringGrid1->Cells[1][x]='0';
                                           Form1->StringGrid1->Cells[0][x]=x;
                                           Form1->Edit6->Text=ch;
                                           if(ssj==0)
                                           fprintf(fp2,"%10d,         0,          ,        界符,  10010011,%10c\n",x,ch);
                                           x++;
                                           break;
                                          }
          }
          if(ch==';')                  //界符符号处理
          {
           c[0]='\0';c[1]='\0';c[2]='\0';c[3]='\0';c[4]='\0';
           Form1->StringGrid1->Cells[5][x]=ch;
           Form1->StringGrid1->Cells[4][x]=10010100;
           Form1->StringGrid1->Cells[3][x]="界符";
           Form1->StringGrid1->Cells[2][x]="";
           Form1->StringGrid1->Cells[1][x]='0';
           Form1->StringGrid1->Cells[0][x]=x;
           Form1->Edit6->Text=ch;
           if(ssj==0)
           fprintf(fp2,"%10d,         0,          ,        界符,  10010100,%10c\n",x,ch);
           x++;
           break;
          }
          if(ch==',')                //界符符号处理
          {
           
           Form1->StringGrid1->Cells[5][x]=ch;
           Form1->StringGrid1->Cells[4][x]=10010101;
           Form1->StringGrid1->Cells[3][x]="界符";
           Form1->StringGrid1->Cells[2][x]="";
           Form1->StringGrid1->Cells[1][x]='0';
           Form1->StringGrid1->Cells[0][x]=x;
           Form1->Edit6->Text=ch;
           if(ssj==0)
           fprintf(fp2,"%10d,         0,          ,        界符,  10010101,%10c\n",x,ch);
           x++;
           break;
          }
          if(ch==';'||ch==',')              //界符符号处理
          {
           Form1->StringGrid1->Cells[5][x]=ch;
           Form1->StringGrid1->Cells[4][x]="0000";
           Form1->StringGrid1->Cells[3][x]="界符";
           Form1->StringGrid1->Cells[2][x]="";
           Form1->StringGrid1->Cells[1][x]='0';
           Form1->StringGrid1->Cells[0][x]=x;
           Form1->Edit6->Text=ch;
           if(ssj==0)
           fprintf(fp2,"%10d,         0,          ,        界符,  000000,%10c\n",x,ch);
           x++;
           break;
          }
          if(ch==32||ch=='\0')          //当CH为空格或结束标记时退出
                 return p;
          if(ch=='\n')                  //当CH为换行时处理
          {
           if(ssj==1)
           x=x-1;
           return p;
          }
          for(m=0;m<12;m++)           //若CH非以上出现符号,匹配标识符符号表
           {
            if(ch==str4[m].a)
            break;
           }
           Form1->StringGrid1->Cells[5][x]=ch;
           Form1->StringGrid1->Cells[4][x]=str2[m].b;
           Form1->StringGrid1->Cells[3][x]="标识符";
           Form1->StringGrid1->Cells[2][x]="";
           Form1->StringGrid1->Cells[1][x]='0';
           Form1->StringGrid1->Cells[0][x]=x;
           Form1->Edit6->Text=ch;
           if(ssj==0)
           fprintf(fp2,"%10d,         0,          ,      标识符,%10s,%10c\n",x,str2[m].b,ch);
           x++;
        return p;
   l:      for(m=0;m<15;m++)        //匹配运算符符号表
           {
            if(ch==str2[m].a)
            break;
           }
           Form1->StringGrid1->Cells[5][x]=ch;
           Form1->StringGrid1->Cells[4][x]=str2[m].b;
           Form1->StringGrid1->Cells[3][x]="运算符";
           Form1->StringGrid1->Cells[2][x]="";
           Form1->StringGrid1->Cells[1][x]='0';
           Form1->StringGrid1->Cells[0][x]=x;
           if(ssj==0)
           fprintf(fp2,"%10d,         0,          ,      运算符,%10s,%10c\n",x,str2[m].b,ch);
           x++;
	}
   return p;
 }
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 char ch;                                
         int ok(char ch,int i);
        if(ssj1==1)             //当有动画过程时的输入处理
        {
        if(s[z]!='\0')
        {
         ch=s[z];               //将S数组中字符依次单个存入CH     
         z=ok(ch,z);            //调用主函数处理
         z++;
         if(s[z]=='\0')         //当数据全部处理后,进行结束处理
	{
         z=ok('\0',z);       
        Form1->Edit4->Text="\0";Form1->Edit5->Text="\0";Form1->Edit6->Text="\0";
        Form1->StringGrid1->Cells[5][x]="\0";
        Form1->StringGrid1->Cells[4][x]="\0";
        Form1->StringGrid1->Cells[3][x]="\0";
        Form1->StringGrid1->Cells[2][x]="\0";
        Form1->StringGrid1->Cells[1][x]="\0";
        Form1->StringGrid1->Cells[0][x]="\0";
 while(y<=x)
 {
  if(Form1->StringGrid1->Cells[4][y]=="error")      //统计出错数量
      count++;
  y++;
 }
 Edit1->Text=count;
 if(count==0)
 {
  Form1->Animate11->Visible=false;
 }
 else
 {
  Form1->Animate11->Visible=false;
  Form1->Button7->Click();
 }
 }
 }
 }
 else                       //当无动画过程时的输入处理
 {
  while(s[z]!='\0')        //当输入数据非空即处理下一字符
        {
         ch=s[z];
         z=ok(ch,z);
         z++;
         if(s[z]=='\0')
	{
         z=ok('\0',z);
        Form1->Edit4->Text="\0";Form1->Edit5->Text="\0";Form1->Edit6->Text="\0";
        Form1->StringGrid1->Cells[5][x]="\0";
        Form1->StringGrid1->Cells[4][x]="\0";
        Form1->StringGrid1->Cells[3][x]="\0";
        Form1->StringGrid1->Cells[2][x]="\0";
        Form1->StringGrid1->Cells[1][x]="\0";
        Form1->StringGrid1->Cells[0][x]="\0";
 while(y<=x)
 {
  if(Form1->StringGrid1->Cells[4][y]=="error")          //出错统计
      count++;
  y++;
 }
 Edit1->Text=count;
 if(count==0)
 {
  Form1->Animate11->Visible=false;
 }
 else
 {
  Form1->Animate11->Visible=false;
  Form1->Button7->Click();
 }
 }
 }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Button3->Click();

Animate1->FileName="粉色Y.avi";
Animate2->FileName="橙色Y.avi";
Animate3->FileName="绿色Y.avi";
Animate4->FileName="大陆台湾.avi";
Animate4->Active=true;
Animate5->FileName="吹尾巴.avi";
Animate5->Active=true;
Animate6->FileName="谁怕谁.avi";
Animate6->Active=true;
Animate7->FileName="猫游泳.avi";
Animate7->Active=true;
Animate8->FileName="龟跳舞.avi";
Animate8->Active=true;
Animate9->FileName="猪尾巴.avi";
Animate9->Active=true;
Animate10->FileName="starwind.avi";
Animate10->Active=true;
Animate11->FileName="原始人.avi";
Animate12->FileName="原子弹.avi";
Animate13->FileName="小新.avi";

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
 STARTUPINFO si;                           //开机画面调用
 PROCESS_INFORMATION pi;
 ZeroMemory(&si,sizeof(si));
 si.cb=sizeof(si);
 ZeroMemory(&pi,sizeof(pi));
 CreateProcess("真正做好了.exe",NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button4Click(TObject *Sender)
{
 if(haha==1)
 MediaPlayer1->Play();
 haha++;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
{Close();
 Button6->Click();

}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button6Click(TObject *Sender)
{
 STARTUPINFO si;                      //关机画面调用
 PROCESS_INFORMATION pi;
 ZeroMemory(&si,sizeof(si));
 si.cb=sizeof(si);
 ZeroMemory(&pi,sizeof(pi));
 CreateProcess("完.exe",NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button7Click(TObject *Sender)
{
 Animate12->Visible=true;
 Animate12->Play(1,27,1);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button8Click(TObject *Sender)
{
 Animate12->Visible=false;
 Animate13->Visible=true;
 Animate13->Play(1,38,2);       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button9Click(TObject *Sender)
{
 Animate13->Visible=false;        
}
//---------------------------------------------------------------------------

















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -