资源简介
需要创建一个名字叫project.txt的文件来存储要识别的文法
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
using namespace std;
string M[2000][2000]; //任务分析表
stack cc; //分析栈
queue qq; //输入串
set ww[200]; //first集
set T; //终结符集
set N; //非终结符集合
set vv[200]; //中间过程记录集
set ff[200]; //fllow集合
set select[200]; //select集合
int step = 0; //步骤统计变量
int error_flag=0; //错误标志位
int nullflag[1000]; //是否推空标志
int nullselect[1000]; //集合是否推空标志
int ll=0; //文法行数
int T_flag[1000]; //右侧是否含有终结符
int length_char[1000]; //每行文法的字符个数
char line[100][1024]; //文法记录表
//判断是否是非终结符
bool isN(char v)
{
if(v>=‘A‘&&v<=‘Z‘)
{
return true;
}
return false;
}
//判断是否是终结符
bool isT(char v)
{
if(isN(v)==0&&v!=‘|‘&&v!=‘-‘&&v!=‘>‘)
{
return true;
}
return false;
}
//输出符号栈里的值
void showCC()
{
stack cc2=cc;
stack cc3;
while(!cc2.empty())
{
cc3.push(cc2.top());
cc2.pop();
}
while(!cc3.empty())
{
cout< cc3.pop();
}
cout<<“\t“;
}
//输出匹配字符串剩余部分
void showPP()
{
queue pp2;
pp2=qq;
while(!pp2.empty())
{
cout< pp2.pop();
}
cout<<“\t“;
}
//判断集合记录是否为空,也即是否处理完所有过程
bool isEmpty()
{
for(set::iterator ite1 = N.begin();ite1!=N.end();ite1++)
{
if(!vv[int(*ite1)].empty())
return false;
}
return true;
}
//求和,用于是否完成空字符判断
int sum()
{
int suum=0;
for(set::iterator ite1 = N.begin();ite1!=N.end();ite1++)
{
suum+=nullflag[int(*ite1)];
}
return suum;
}
//判断是否有推空非终结符
void _null()
{
int cha=999;
int yuan=sum();
while(cha!=0)
{
//0代表不能推出空,1代表可以
for(int i=0;i {
if(T_flag[i]==0)
{
int t=1;
for(int j=3;j {
t=t&&nullflag[int(line[i][j])];
}
nullflag[int(line[i][0])]=t;
}
}
cha=yuan-sum();
yuan=sum();
}
}
//判断select集合时,右侧是否可以推空
void _null2()
{
for(int i=0;i {
for(set::iterator ite2 = select[i].begin();ite2!=select[i].end();ite2++)
{
if(*ite2==‘^‘)
{
nullselect[i]=1;
break;
}
}
}
}
void raedFromFile()
{
fstream infile(“project.txt“ios::in);
while(infile.getline(line[ll]sizeof(line[ll])))
{
for(int i=0;i<100;i++)
{
if(int(line[ll][i])==0)
{
length_char[ll]=i;
break;
}
- 上一篇:联络矩阵最小路集不交化
- 下一篇:vc 视频会议系统v2.8 源码
相关资源
- vc 视频会议系统v2.8 源码
- C++ 公司员工管理系统的设计源代码
- 编译原理 LR0项目集规范族的构造 L
- DNFC++辅助开源
- 标准C++STL源码剖析(侯捷著)(非扫
- Effective C++ 中文版2nd Edition
- VC++界面换肤 界面自绘 内置滚动条自
- celrityC/C++源码查看工具
- Microsoft Visual C++ 14Build Tools
- 毕业设计C++五子棋源代码及毕业论文
- 哲学家进餐问题的c++模拟实现
- 数据结构课程设计 停车场管理系统
- puma560的运动学正解和逆解的C++源码
- 简单的汽车租赁管理软件C++控制台程
- 定义和使用分数类fraction
- 剑灵辅助源码
- 数字图像处理扑克牌识别程序
- BC45,BC++ 4.5 开发工具
- C++ 数据结构书籍 - 清华大学 - 邓俊辉
- C++AMP.pdf
- C++ Primer 第五版 中文版+英文版 pdf
- Visual C++音频视频处理技术及工程实践
- VC++各版本合集2005-2017
- 数字图像处理与机器视觉——Visual
- QT5.9_c++开发指南——随书[源码]
- C++数据结构原理与经典问题求解源代
- 数据结构与程序设计C++描述(Kruse著)
- 网络调试助手C++源码(VS 2008开发)
- 基于c++的科大讯飞源码
- MFC 官方API文档 MSDN原版
评论
共有 条评论