91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

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

資源簡介

非常強大而又完整的一個C++程序,包括判斷空字符,FIRST,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;??//下標或臨時變量
int?len?=?0;??//字符串長度
int?isENum?=?0;??//能推出e的終結符數量
bool?isE?=?false;?//標記是否能推出e
bool?isUpdate?=?false;??//標記是否更新過結果集
bool?isSame?=?false;??//標記是否有相同SELECT結果集
char?strTemp[100]?=?“\0“;??//臨時字符串?或 要分析的字符串
char?cTemp?=?‘\0‘;??//臨時字符

int?grammarNum?=?0;??//文法數量
char?(*grammar)[32];??//文法??grammar[grammarNum][32]
char?noEndSign[30];??//非終結符
char?endSign[100];??//終結符
char?(*grammarTemp)[32];??//臨時文法??grammarTemp[grammarNum][32]
char?(*isDerivation_e)[2];??//標記非終結符是否推出e數組??isDerivation_e[strlen(noEndSign)][2]
char?(*frist)[100];??//每個文法符號的FRIST集??frist[strlen(noEndSign)?+?strlen(endSign)][100]
char?(*bringFrist)[2][100];??//產生式的FRIST集??bringFrist[grammarNum][2][100]
char?(*fllow)[100];??//非終結符的FLLOW集??fllow[strlen(noEndSign)][100]
char?(*select)[2][100];??//select集??select[grammarNum][2][100]

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

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

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

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

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

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

//檢測文法合法性
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<<“產生式含有非法字符,請重新輸入:“< --i;
break;
}
}

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

}

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

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

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

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

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

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


評論

共有 條評論