xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 124KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-07-28
  • 語言: C/C++
  • 標(biāo)簽: LL1??C++??

資源簡(jiǎn)介

非常強(qiáng)大而又完整的一個(gè)C++程序,包括判斷空字符,F(xiàn)IRST,FOLLOW,SELECT集合,短語判斷等,備有WORD文檔

資源截圖

代碼片段和文件信息

#include?
#include?
#include??
#include?
using?namespace?std;

//////////////////////////////////////////////////////////////////////////
//全局變量字典{

int?i?=?0?j?=?0?t?=?0?n?=?0?m?=?0?x?=?0?y?=?0;??//下標(biāo)或臨時(shí)變量
int?len?=?0;??//字符串長(zhǎng)度
int?isENum?=?0;??//能推出e的終結(jié)符數(shù)量
bool?isE?=?false;?//標(biāo)記是否能推出e
bool?isUpdate?=?false;??//標(biāo)記是否更新過結(jié)果集
bool?isSame?=?false;??//標(biāo)記是否有相同SELECT結(jié)果集
char?strTemp[100]?=?“\0“;??//臨時(shí)字符串?或 要分析的字符串
char?cTemp?=?‘\0‘;??//臨時(shí)字符

int?grammarNum?=?0;??//文法數(shù)量
char?(*grammar)[32];??//文法??grammar[grammarNum][32]
char?noEndSign[30];??//非終結(jié)符
char?endSign[100];??//終結(jié)符
char?(*grammarTemp)[32];??//臨時(shí)文法??grammarTemp[grammarNum][32]
char?(*isDerivation_e)[2];??//標(biāo)記非終結(jié)符是否推出e數(shù)組??isDerivation_e[strlen(noEndSign)][2]
char?(*frist)[100];??//每個(gè)文法符號(hào)的FRIST集??frist[strlen(noEndSign)?+?strlen(endSign)][100]
char?(*bringFrist)[2][100];??//產(chǎn)生式的FRIST集??bringFrist[grammarNum][2][100]
char?(*fllow)[100];??//非終結(jié)符的FLLOW集??fllow[strlen(noEndSign)][100]
char?(*select)[2][100];??//select集??select[grammarNum][2][100]

char?construeArray[100];??//分析棧
char?bringStr[100];??//推導(dǎo)所用的產(chǎn)生式或匹配字符串
char?stepNum[10];??//步聚數(shù)
char?construeTop?=?‘\0‘;??//棧頂字符
char?strTempTop?=?‘\0‘;??//剩余輸入串頭字符

//全局變量字典}
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
//輸入文法
void?InputGrammar()
{
//初始數(shù)據(jù)
do?
{
n?=?0;??//標(biāo)記成功賦值的變量數(shù)
fflush(stdin);??//清空輸入緩存區(qū)
cout<<“請(qǐng)輸入產(chǎn)生式數(shù)量(1<=n<=20):“;
n?=?scanf(“%d“?&grammarNum);
}?while(!n?||?grammarNum??20);

? grammar?=?new?char[grammarNum][32];

//輸入文法字符串
cout<<“\n“<<“文法輸入規(guī)則如下:\n\na、大寫英文字母表示非終結(jié)符。\
\nb、e表示空產(chǎn)生式。?\
\nc、除大寫字母、#、‘、|?外的單字符表示終結(jié)符。\
\nd、不能出現(xiàn)遞歸文法。(如?S->Sa;)\
\ne、不能出現(xiàn)多余文法規(guī)則。(如?S->A,A不是非終結(jié)符;程序不檢測(cè))\
\nf、文法產(chǎn)生式長(zhǎng)度不超過10個(gè)字符。(程序不檢測(cè))“<<“\n“<
for?(i?=?0;?i? {
cout<
//輸入文法左部
strTemp[0]?=?getch();
if?(?strTemp[0]?>=?‘A‘?&&?strTemp[0]?<=?‘Z‘)
{
grammar[i][0]?=?strTemp[0];
cout<“;
}
else
{
cout<<“請(qǐng)輸入非終結(jié)符!“< --i;
continue;
}

//輸入文法右部
cin>>strTemp;
for?(j?=?0;?j? {
grammar[i][j+1]?=?strTemp[j];
}
grammar[i][++j]?=?‘\0‘;

//檢測(cè)文法合法性
len?=?strlen(grammar[i]);
for?(j?=?1;?j? {
//是否為空串
if?(j?==?1?&&?grammar[i][j]?==?‘e‘?&&?grammar[i][j+1]?==?‘\0‘)
{
continue;
}

if(grammar[i][j]?==?‘#‘?||?grammar[i][j]?==?‘|‘?||?grammar[i][j]?==?‘e‘?||?grammar[i][j]?==?‘\‘‘)
{
cout<<“產(chǎn)生式含有非法字符,請(qǐng)重新輸入:“< --i;
break;
}
}

//檢測(cè)遞歸產(chǎn)生式
for(j=1;?j {
if?(grammar[i][0]?!=?grammar[i][1])
{
break;
}
}
if?(j?==?len)
{
cout<<“文法存在遞歸產(chǎn)生式,請(qǐng)重新輸入:“< --i;
}

}

cout<<‘\n‘<
//顯示文法
cout<<“你輸入的文法是:“<<‘\n‘< for?(i?=?0;?i?

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件??????27486??2009-06-15?14:33??1061301219-潘鑫濤.cpp

?????文件?????335360??2009-06-22?12:35??1061301219-潘鑫濤.doc

-----------?---------??----------?-----??----

???????????????362846????????????????????2


評(píng)論

共有 條評(píng)論