📄 jiandan.cpp
字号:
#include"iostream.h"
#include"iomanip.h"
#include"stdlib.h"
#include"stdio.h"
#include"fun.h"
char M[9][9]={ '#','S','b','A','(','B','a',')','$',
'S','#','#','#','#','#','#','#','>',
'b','#','#','=','<','#','<','#','>',
'A','#','=','#','#','#','=','#','>',
'(','#','#','<','<','=','<','#','>',
'B','#','>','#','#','#','>','#','>',
'a','#','>','#','#','#','>','#','>',
')','#','>','#','#','#','>','=','>',
'$','<','<','<','<','<','<','<','='};
void main()
{
char x,y,Buf[64],b;
int i=0;
wordlist *in,*stack;
in=(wordlist *)malloc(sizeof(wordlist));
stack=(wordlist *)malloc(sizeof(wordlist));
in->next=NULL;
stack->next=NULL;
setcolor(20,10);
cout<<"-------------------------------------------------"<<endl;
cout<<"-----------------语法分析(M)-------------------"<<endl;
cout<<" 2004级计算机一班"<<endl;
cout<<" 姓名:常振华 学号:20041783"<<endl;
listM(M);
creatword(in);
creatstack(stack);
cout<<"单词序列为:"<<endl;
listword(in);
cout<<"栈中的信息为:"<<endl;
// cout<<"stack->head: "<<stack->name<<endl;
listword(stack);
cout<<"Gethead(in)->name: "<<Gethead(in)->name<<endl;
cout<<"Getend(in)->name: "<<Getend(in)->name<<endl;
cout<<"Gethead(in)->name: "<<Gethead(stack)->name<<endl;
cout<<"Getend(in)->name: "<<Getend(stack)->name<<endl;
cout<<"--------------分析如下所示----------------"<<endl;
while(stack->next->name!='S'||Gethead(in)->name!='$')
{
x=Getend(stack)->name;
y=Gethead(in)->name;
cout<<"x: "<<x<<"y: "<<y<<endl;
cout<<"Search(M,x,y):"<<Search(M,x,y)<<endl;
if(Search(M,x,y)=='<'||Search(M,x,y)=='=')
{
listword(stack);listword(in);
Buf[i]=Gethead(in)->name;Buf[i+1]='\0';
cout<<"Buf: "<<Buf<<endl;
Instack(stack,Gethead(in)->name);
Outhead(in);
}
else if(Search(M,x,y)=='>')
{
listword(stack);listword(in);
cout<<"这里是>"<<endl;
Outhead(in);
//////////////////////
//处理栈
Buf[i]='$';
b=ChangeStack(stack,Buf);
for(int j=0;j<i;j++)
Outhead(stack);
cout<<"b: "<<b<<endl;
Instack(stack,b);
Buf[0]='\0';
i=-1;
}
else if(Search(M,x,y)=='#')
{
setcolor(6,12);
cout<<"出错了!"<<endl;
setcolor(20,10);
Outhead(in);
}
else
{cout<<"Nothing !"<<endl;}
if(stack->next->name=='S'&&Gethead(in)->name=='$')
cout<<"正常退出!"<<endl;
i++;
cout<<"--------------------------"<<endl;
}
setcolor(6,12);
cout<<"分析结束!!!"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -