资源简介
输入文法,求出文法的FIRST集和FOLLOW集,分析表,对文法进行分析。
代码片段和文件信息
#include
#include
#include“stack.h“
int Number; //文法中表达式的个数
char a[10][20]; //储存文法
char str[100]; //储存字符串
int vt_num; //非终结符的个数
char vt[10]; //储存所有终结字符的数组(包括#)
typedef struct
{
char data[10]; //储存产生式的字符串
}table;
table M[10][10]; //LL(1)分析表
typedef struct
{
char data[20]; //FIRST集各元素
int length; //FIRST集元素个数
bool flag; //判断FIRST集是否完整
}First;
typedef struct //文法的所有FIRST集
{
First ft[10];
}FIRST;
typedef struct
{
char data[20]; //FOLLOW集各元素
int length; //FOLLOW集元素个数
bool flag; //判断FOLLOW集是否完整
}Follow;
typedef struct //文法的所有FOLLOW集
{
Follow fw[10];
}FOLLOW;
void Input()
{
char ch;
int ij=0;
printf(“注: 大写字母表示非终结字符,其余字符为终结字符。\n“);
printf(“输入文法产生式的个数:\n“);
scanf(“%d“&Number);
printf(“输入文法:(例如 S->aS|b)\n(输入‘#‘表示产生式输入完毕)\n“);
ch=getchar();
for(i=0;i {
j=0;
while(ch!=‘#‘) //输入‘#‘表示一个表达式输入完毕
{
if(ch!=‘\n‘) a[i][j++]=ch;
ch=getchar();
}
a[i][j]=ch;
ch=getchar(); //得到的字符是换行字符
}
printf(“输入字符串:(输入‘#‘表示字符串输入完毕)\n“);
ch=getchar();i=0;
while(ch!=‘#‘) //输入‘#‘表示字符串输入完毕
{
if(ch!=‘\n‘) str[i++]=ch;
ch=getchar();
}
str[i]=ch;
printf(“输入所有非终结符的个数:\n“);
scanf(“%d“&vt_num);
printf(“输入各个非终结符:\n“);getchar();
for(i=0;i }
void OutputData() //输出输入的数据
{
int j;
printf(“输出刚输入的数据:\n“);
for(int i=0;i {
for(j=0;a[i][j]!=‘#‘;j++) putchar(a[i][j]);
putchar(‘\n‘);
}
j=0;
while(str[j]!=‘#‘) putchar(str[j++]);
putchar(‘\n‘);
for(j=0;j putchar(‘\n‘);
}
void DelChar_FT(FIRST &FTint k) //删除第k个FIRST集中重复的字符
{
if(FT.ft[k].length==0||FT.ft[k].length==1) return;
for(int i=0;i {
for(int j=i+1;j {
if(FT.ft[k].data[j]==FT.ft[k].data[i])
{
for(int r=j;r FT.ft[k].length--;
j--;
}
}
}
}
void DelChar_FW(FOLLOW &FWint k) //删除第k个FOLLOW集中重复的字符
{
if(FW.fw[k].length==0||FW.fw[k].length==1) return;
for(int i=0;i {
for(int j=i+1;j {
if(FW.fw[k].data[j]==FW.fw[k].data[i])
{
for(int r=j;r FW.fw[k].length--;
j--;
}
}
}
}
void PrintFirst(FIRST FT) //输出文法的FIRST集
{
printf(“输出FIRST集:\n“);
for(int i=0;i {
printf(“FIRST(%c)={ “a[i][0]);
for(int j=0;j printf(“}\n“);
}
}
void PrintFollow(FOLLOW FW) //输出文法的FOLLOW集
{
printf(“输出FOLLOW集:\n“);
for(int i=0;i {
printf(“FOLLOW(%c)={ “a[i][0]);
for(int j=0;j printf(“}\
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 43008 2010-05-05 22:03 预测分析法\Debug\预测分析法.exe
文件 406980 2010-05-05 22:03 预测分析法\Debug\预测分析法.ilk
文件 429056 2010-05-05 22:03 预测分析法\Debug\预测分析法.pdb
文件 69 2010-05-05 19:11 预测分析法\测试数据.txt
文件 7898 2010-05-05 22:03 预测分析法\预测分析法\Debug\BuildLog.htm
文件 67 2010-05-05 22:03 预测分析法\预测分析法\Debug\mt.dep
文件 52224 2010-05-05 22:03 预测分析法\预测分析法\Debug\vc90.idb
文件 69632 2010-05-05 22:03 预测分析法\预测分析法\Debug\vc90.pdb
文件 663 2010-05-05 21:40 预测分析法\预测分析法\Debug\预测分析法.exe.em
文件 728 2010-05-05 21:40 预测分析法\预测分析法\Debug\预测分析法.exe.em
文件 621 2010-05-05 22:03 预测分析法\预测分析法\Debug\预测分析法.exe.intermediate.manifest
文件 39426 2010-05-05 22:03 预测分析法\预测分析法\Debug\预测分析法.obj
文件 835 2010-05-05 21:11 预测分析法\预测分析法\stack.h
文件 9933 2010-05-05 22:03 预测分析法\预测分析法\预测分析法.cpp
文件 3987 2010-05-05 16:37 预测分析法\预测分析法\预测分析法.vcproj
文件 1427 2010-05-10 02:51 预测分析法\预测分析法\预测分析法.vcproj.PC2009111513DQB.Administrator.user
文件 732160 2010-05-10 02:51 预测分析法\预测分析法.ncb
文件 911 2010-05-05 00:46 预测分析法\预测分析法.sln
..A..H. 8704 2010-05-10 02:51 预测分析法\预测分析法.suo
目录 0 2010-05-05 22:03 预测分析法\预测分析法\Debug
目录 0 2010-05-05 21:40 预测分析法\Debug
目录 0 2010-05-05 22:03 预测分析法\预测分析法
目录 0 2010-05-05 12:50 预测分析法
----------- --------- ---------- ----- ----
1808329 23
- 上一篇:Alteryx教程
- 下一篇:五大手册FMEA、MSA、APQP、PPAP、SPC
相关资源
- 基于数据驱动的故障预测模型
- 提高风出力预测精度的储能系统模糊
- 电网负荷预测论文集9篇
- 基于蚁群算法优化SVM的瓦斯涌出量预
- 基于模糊聚类和SVM的瓦斯涌出量预测
- 最小预测跷跷板模型中的脂肪生成
- 中微子混合矩阵和无中微子双β衰
- 基于时序SAR技术的采空区上方高速公
- 约化分子电距矢量用于茎用莴苣花挥
- 基于CAN总线与ZigBee的瓦斯实时监测及
- 基于熵权法的PHC管桩承载力组合预测
- 基于动态分类器集成选择和GM(21)
- 缓冲算子理论在矿井瓦斯涌出量预测
- 瓦斯涌出量预测的GM(11)模型改进
- 矿井瓦斯涌出量建模预测
- 基于灰色系统理论的矿井瓦斯涌出量
- 矿井回采工作面瓦斯涌出量预测新途
- 矿井瓦斯涌出量的GM(11)新陈代谢模
- GM(11)模型与线性回归组合方法在矿
- 灰色系统理论在矿井瓦斯涌出量预测
- 等维新息模型在矿井瓦斯涌出量预测
- 基于改进灰色模型的矿井瓦斯涌出量
- GM(11)与ARIMA模型在中国一次能源消
- 基于时间加权-新陈代谢GM(11)模型在
- 基于新陈代谢GM(11)-ARMA(pq)模型的
- 改进的GM(11)模型在城市规划货运量
- 大型强子对撞机中单个矢量样夸克生
- 超外围碰撞中的排他和/ψ光产生:
- 《综合数据AI方法预测2019-nCoV传播结束
- 有源滤波器的预测电压空间矢量控制
评论
共有 条评论