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

📄 lr.txt

📁 编译原理实验四用lr文法分析方法实现文法的分析功能
💻 TXT
字号:
#include<iostream>
#include<iomanip>
using namespace std;
int zt[100];
int zttop=0,fhtop=0;
char a,fh[100];
void push(int i,char ch);
void zt0();
void zt1();
void zt2();
void zt3();
void zt4();
void zt5();
void zt6();
void zt7();
void zt8();
void zt9();
void showstack();
void main()
{
	cout<<" 状态栈 "<<" 符号栈 "<<endl;
	zt[0]=0;
	fh[0]='#';
	showstack();
	zt0();
}
void zt0()
{
	if(fh[fhtop]=='S')
		zt1();
	else
	{
		a=getchar();
		if(a=='a')
		{
			zt2();
		}
	}
}
void zt1()
{
	push(1,'S');
	a=getchar();
	if(a=='#')
	{
		cout<<"   \nover!\n  ";
	}
}
void zt2()
{
	push(2,'a');
	if(fh[fhtop]=='A')
		zt3();
	a=getchar();
	if(a=='b')
	{
		zt4();
	}
}
void zt3()
{
	push(3,'A');
	a=getchar();
	if(a=='c')
	{
		zt5();
	}
	else if(a=='b')
	{
		zt6();
	}
}
void zt4()
{
	push(4,'b');
	fhtop--;
	zttop--;
	zt3();
}
void zt5()
{
	push(5,'c');
	if(fh[fhtop]=='B')
		zt7();
	a=getchar();
	if(a=='d')
	{
		zt8();
	}
}
void zt6()
{
	push(6,'b');
	fhtop=fhtop-2;
	zttop=zttop-2;
	zt3();
}
void zt7()
{
	push(7,'B');
	a=getchar();
	if(a=='e')
	{
		zt9();
	}
}
void zt8()
{
	push(8,'d');
	fhtop=fhtop-1;
	zttop=zttop-1;
	zt7();
}
void zt9()
{
	push(9,'e');
	a=getchar();
	fhtop=fhtop-5;
	zttop=zttop-5;
	zt1();
}
void push(int i,char ch)
{
	zttop++;
	zt[zttop]=i;
	fhtop++;
	fh[fhtop]=ch;
	showstack();
}
void showstack()
{
	cout<<setw(4);
	for(int i=0;i<=zttop;i++)
	{
		cout<<zt[i];
	}
	cout<<setw(8);
	for(int j=0;j<=fhtop;j++)
	{
		cout<<fh[j];
	}
	cout<<endl;
}

⌨️ 快捷键说明

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