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

  • 大小: 10KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2022-10-04
  • 語言: C/C++
  • 標(biāo)簽:

資源簡介

詞法分析器源代碼(C語言和c++語言)為編譯原理課程設(shè)計課題,實現(xiàn)了一個功能簡單能夠?qū)文件進行分析的詞法分析器

資源截圖

代碼片段和文件信息


#include?
#include?
#include?
#include?
const?int?MAX=30;
const?int?MAXSIZE=80;
char?css[MAX][MAXSIZE];//存放產(chǎn)生式,并以‘#‘結(jié)束
int?F[MAX][MAXSIZE];//二維數(shù)組表示FirstVT(P)表
int?L[MAX][MAXSIZE];//二維數(shù)組表示LastVT(P)表
char?strVN[MAX];//存放非終結(jié)符
char?strVT[MAXSIZE];//存放終結(jié)符
int?Priority_Table[MAX][MAX];//優(yōu)先表
char?Sentence[MAXSIZE];//用以存放用戶從鍵盤上讀入一個句子最大長度不超過MAXSIZE個字符
int?CountVT;//存放終結(jié)符個數(shù)
int?CountVN;//存放非終結(jié)符個數(shù)
int?SCount;//存放句子長度
int?Maxline;//存放輸入產(chǎn)生式的個數(shù)
typedef?struct
{
char?VN;//非終結(jié)符,均用大寫英文字母表示
char?VT;//終結(jié)符,算符或小寫英文字母或分隔符
}VNODE;
typedef?struct
{
VNODE?*base;
int?top;//棧頂指針
}Stack;
void?InitStack(Stack?&S)
{
S.base=new?VNODE[MAXSIZE];
S.top=-1;
}
int?IsEmptyStack(Stack?S)
{
if(S.top<=-1)
return?1;
return?0;
}
void?ClearStack(Stack?&S)
{
S.top=-1;
}
void?Push(Stack?&Schar?Pchar?a)
{
if(S.top>=MAXSIZE)
{
cerr<<“Stack?is?overflow!“< exit(0);
}
????S.top++;
S.base[S.top].VN=P;
S.base[S.top].VT=a;
}
void?Pop(Stack?&Schar?&Qchar?&a)
{
if(S.top<=-1)
{
cerr<<“Stack?is?empty!“< exit(0);
}
Q=S.base[S.top].VN;
a=S.base[S.top].VT;
S.top--;
}
int?IsVN(char?ch)
{
if(ch>=‘A‘&&ch<=‘Z‘)
return?1;
return?0;
}//IsVN()

int?IsVT(char?ch)
{
if(!IsVN(ch)&&ch!=‘|‘)
return?1;
return?0;
}//IsVT()

void?SearchVT()
{
int?i=0jk=0l;
while(strcmp(css[i]“#“)!=0)
{
j=3;
while(css[i][j]!=‘\0‘)
{
if(IsVT(css[i][j]))
{
if(k==0)
???????????????????strVT[k++]=css[i][j];
else{
??????for(l=0;l ????if(l>=k)
strVT[k++]=css[i][j];
}//else
}
j++;
}
i++;
}
strVT[k++]=‘#‘;
CountVT=k;
}//SearchVT()

void?SearchVN()
{
int?i=0j=0k;
while(strcmp(css[i]“#“)!=0)
{
if(j==0)
??strVN[j++]=css[i][0];
else{
for(k=0;k if(k>=j)
strVN[j++]=css[i][0];
}//else
i++;
}
CountVN=j;
}//SearchVN()

int?IsSFWF()//判斷是否為算符文法
{
int?i=0jk;
char?*p;
while(strcmp(css[i]“#“)!=0)
{
p=css[i];j=3;//前三個分別存放非終結(jié)符和尖號,即“P->“
while(*(p+j)!=‘\0‘)
{
k=j;
if(IsVN(*(p+j)))
{
j++;
if(*(p+j)!=‘\0‘&&IsVN(*(p+j)))
return?0;
else?if(*(p+j)==‘\0‘)?
???break;
if(*(p+j)!=‘\0‘&&(IsVT(*(p+j))||*(p+j)==‘|‘))
{
j=k+1;
continue;
}
}
j++;
}
i++;
}
return?1;
}//IsSFWF()

int?Ch_to_Num(char?ch)
{
int?i;
if(IsVT(ch))
{
???for(i=0;i ??????if(ch==strVT[i])
????return?i+1;
}
if(IsVN(ch))
{
????????for(i=0;i ???if(ch==strVN[i])
??return?i+1;
}
return?0;//表示不存在或沒有找到
}//Ch_to_Num()

void?Insert(Stack?&Schar?Pchar?aint?flag)//flag是標(biāo)志,其中0代表置F表,1代表置L表
{
int?ij;
i=Ch_to_Num(P);
j=Ch_to_Num(a);
if(i>0&&j>0)
{
??switch(flag)
??{
??case?0:?if(!F[i-1][j-1])
??F[i-1][j-1]=1;break;
??case?1:?if(!L[i-1][j-1])
??L[i-1][j-1]=1;break

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

?????文件??????13483??2008-10-09?11:02??C%2B%2B詞法分析器(源代碼).cpp

?????文件??????40142??2008-12-17?14:54??代碼.rtf

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

????????????????53625????????????????????2


評論

共有 條評論