資源簡介
輸入文法,求出文法的FIRST集和FOLLOW集,分析表,對文法進行分析。

代碼片段和文件信息
#include
#include
#include“stack.h“
int?Number; //文法中表達式的個數(shù)
char?a[10][20]; //儲存文法
char?str[100]; //儲存字符串
int?vt_num; //非終結(jié)符的個數(shù)
char?vt[10]; //儲存所有終結(jié)字符的數(shù)組(包括#)
typedef?struct
{
char?data[10]; //儲存產(chǎn)生式的字符串
}table;
table?M[10][10]; //LL(1)分析表
typedef?struct
{
char?data[20]; //FIRST集各元素
int?length; //FIRST集元素個數(shù)
bool?flag; //判斷FIRST集是否完整
}First;
typedef?struct //文法的所有FIRST集
{
First?ft[10];
}FIRST;
typedef?struct
{
char?data[20]; //FOLLOW集各元素
int?length; //FOLLOW集元素個數(shù)
bool?flag; //判斷FOLLOW集是否完整
}Follow;
typedef?struct //文法的所有FOLLOW集
{
Follow?fw[10];
}FOLLOW;
void?Input()
{
char?ch;
int?ij=0;
printf(“注:?大寫字母表示非終結(jié)字符,其余字符為終結(jié)字符。\n“);
printf(“輸入文法產(chǎn)生式的個數(shù):\n“);
scanf(“%d“&Number);
printf(“輸入文法:(例如?S->aS|b)\n(輸入‘#‘表示產(chǎ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(“輸入所有非終結(jié)符的個數(shù):\n“);
scanf(“%d“&vt_num);
printf(“輸入各個非終結(jié)符:\n“);getchar();
for(i=0;i }
void?OutputData() //輸出輸入的數(shù)據(jù)
{
int?j;
printf(“輸出剛輸入的數(shù)據(jù):\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集中重復(fù)的字符
{
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集中重復(fù)的字符
{
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??預(yù)測分析法\Debug\預(yù)測分析法.exe
?????文件?????406980??2010-05-05?22:03??預(yù)測分析法\Debug\預(yù)測分析法.ilk
?????文件?????429056??2010-05-05?22:03??預(yù)測分析法\Debug\預(yù)測分析法.pdb
?????文件?????????69??2010-05-05?19:11??預(yù)測分析法\測試數(shù)據(jù).txt
?????文件???????7898??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\Debug\BuildLog.htm
?????文件?????????67??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\Debug\mt.dep
?????文件??????52224??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\Debug\vc90.idb
?????文件??????69632??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\Debug\vc90.pdb
?????文件????????663??2010-05-05?21:40??預(yù)測分析法\預(yù)測分析法\Debug\預(yù)測分析法.exe.em
?????文件????????728??2010-05-05?21:40??預(yù)測分析法\預(yù)測分析法\Debug\預(yù)測分析法.exe.em
?????文件????????621??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\Debug\預(yù)測分析法.exe.intermediate.manifest
?????文件??????39426??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\Debug\預(yù)測分析法.obj
?????文件????????835??2010-05-05?21:11??預(yù)測分析法\預(yù)測分析法\stack.h
?????文件???????9933??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\預(yù)測分析法.cpp
?????文件???????3987??2010-05-05?16:37??預(yù)測分析法\預(yù)測分析法\預(yù)測分析法.vcproj
?????文件???????1427??2010-05-10?02:51??預(yù)測分析法\預(yù)測分析法\預(yù)測分析法.vcproj.PC2009111513DQB.Administrator.user
?????文件?????732160??2010-05-10?02:51??預(yù)測分析法\預(yù)測分析法.ncb
?????文件????????911??2010-05-05?00:46??預(yù)測分析法\預(yù)測分析法.sln
????..A..H.??????8704??2010-05-10?02:51??預(yù)測分析法\預(yù)測分析法.suo
?????目錄??????????0??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法\Debug
?????目錄??????????0??2010-05-05?21:40??預(yù)測分析法\Debug
?????目錄??????????0??2010-05-05?22:03??預(yù)測分析法\預(yù)測分析法
?????目錄??????????0??2010-05-05?12:50??預(yù)測分析法
-----------?---------??----------?-----??----
??????????????1808329????????????????????23
- 上一篇:Alteryx教程
- 下一篇:五大手冊FMEA、MSA、APQP、PPAP、SPC
評論
共有 條評論