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

📄 语法.cpp

📁 语法分析 希望可以帮助同学在语法分析上有所帮助
💻 CPP
字号:
#include<iostream.h>
#define N 15
void main()
{int i,j,r,l,s,k,a[10][6],st[N],act,m;
 char in[N],si[N];
 for(i=0;i<10;i++)
 for(j=0;j<6;j++)
 a[i][j]=0;
 for(j=0;j<6;j++)
 {a[4][j]=-2;a[6][j]=-3;a[8][j]=-4;a[9][j]=-1;}
 a[0][0]=2;a[1][5]=10;a[2][3]=4;a[3][1]=5;a[3][3]=6;a[5][4]=8;a[7][2]=9;
 
 for(l=0;;l++)
 {cin>>in[l];
  if(in[l]=='#')break;}
 l++;
 st[0]=0;si[0]='#';m=0;s=0;
 
 for(i=0;;i++)
 {cout<<i+1<<"    ";
  for(j=0;j<=m;j++)
  cout<<st[j];
  cout<<"       ";
  for(j=0;j<=m;j++)
  cout<<si[j];
  cout<<"       ";
  for(r=s;r<l;r++)
  cout<<in[r];
  cout<<"       ";
  k=st[m];
  if(in[s]=='a')act=a[k][0];
  if(in[s]=='c')act=a[k][1];
  if(in[s]=='e')act=a[k][2];
  if(in[s]=='b')act=a[k][3];
  if(in[s]=='d')act=a[k][4];
  if(in[s]=='#')act=a[k][5];

  if(act==0){cout<<"error";break;}
  if(act>0&&act!=10){m++;cout<<"S"<<act<<endl;st[m]=act;si[m]=in[s];s++;}
  if(act==-2){cout<<"r"<<-act<<"   3"<<endl;;st[m]=3;si[m]='A';}
  if(act==-3){cout<<"r"<<-act<<"   3"<<endl;;m--;st[m]=3;si[m]='A';}
  if(act==-4){cout<<"r"<<-act<<"   7"<<endl;;st[m]=7;si[m]='B';}
  if(act==-1){cout<<"r"<<-act<<"   1"<<endl;;m=m-4;st[m]=1;si[m]='S';}
  if(act==10){cout<<"r"<<act;cout<<endl<<"OK";break;}
 }
 cout<<endl;
}

⌨️ 快捷键说明

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