資源簡介
編譯原理算符優先文法實驗源碼

代碼片段和文件信息
#include?
#include?
#include?
#include?
using?namespace?std;
#define?MAXSIZE?100
typedef?struct{
char?data[MAXSIZE];
int?top;
}?stack?*pstack;
char?G[100][100];
char?Firstvt[100][100];
char?Lastvt[100][100];
char?pre[100][100];
char?table[2][100];
char?tab[100][100];
int?a[10];
int?b[10];
pstack?Init_stack(void)
{
pstack?s;
s=?new?stack;
if(s)
s->top=-1;
return?s;
}
int?Empty_stack(pstack?s)
{
if(s->top==-1)
return?1;
return?0;
}
int?Push_stack(pstack?s?char?ch)
{
if(s->top==MAXSIZE)
return?0;
s->top++;
s->data[s->top]=?ch;
return?1;
}
int?Gettop_stack(pstack?s?char?*ch)
{
if(Empty_stack(s))
return?0;
*ch=?s->data[s->top];
return?1;
}
int?Pop_stack(pstack?s?char?*ch)
{
if(Empty_stack(s))
return?0;
*ch=?s->data[s->top];
s->top--;
return?1;
}
void?Destroy_stack(pstack?*s)
{
if(*s)
free(*s);
*s=?NULL;
}
int?Is_vt(char?ch)????????????? ??//是否是終結符?非終結符有大寫字母和et?
{
if(ch>=‘A‘?&&ch<=‘Z‘?||?ch==‘e‘?||?ch==‘t‘||ch==‘s‘)
return?0;?????????????//不是?
else
return?1;????????//是終結符?
}
int?Judge(int?t_g)
{
int?f1=0?f2=0;
for(int?i=0;?i {
if(G[i][2]==‘?‘)
{
cout<<“不是算符優先文法“;
return?0;?
}
for(int?j=2;?G[i][j]!=‘.‘;?j++)
{
if(G[i][j+1]!=‘.‘)
{
if(!Is_vt(G[i][j])?&&?!Is_vt(G[i][j+1]))
{
if(G[i][j]==G[i][j+1])
{
cout<<“不是算符優先文法“;
return?0;
}
}
}
}
}
cout<<“是算符優先文法“< return?1;
}
int?Find_firstvt(int?t_se?int?t_g?int?t_nt)
{
int?i?j?k?t_a=?0;
for(i=0;?i<10;?i++)
a[i]=?0;?
???????
for(i=0;?i {
if(Firstvt[t_se][0]==G[i][0])
a[t_a++]=?i;
}
for(i=0;?i {
j=a[i];
if(Is_vt(G[j][2]))
{
int?t1=?strlen(Firstvt[t_se]);
int?f_xiang=0;
for(int?m1=0;?m1 {
if(Firstvt[t_se][m1]==G[j][2])
f_xiang=1;
}
if(!f_xiang)
Firstvt[t_se][t1]=G[j][2];
}
else
{
if(Is_vt(G[j][3])?&&?G[j][3]!=‘.‘)
{
int?t1=?strlen(Firstvt[t_se]);
int?f_xiang=0;
for(int?m1=0;?m1 {
if(Firstvt[t_se][m1]==G[j][3])
f_xiang=1;
}
if(!f_xiang)
Firstvt[t_se][t1]=G[j][3];
}
if(G[j][2]!=G[j][0])
for(int?k=0;?k {
if(G[j][2]==G[k][0]?&&?j!=k)
a[t_a++]=?k;
}
}
}
return?1;
}
int?Find_lastvt(int?t_se?int?t_g?int?t_nt)
{
int?i?j?k?t_a=?0;
for(i=0;?i<10;?i++)
a[i]=?0;????????
for(i=0;?i if(Firstvt[t_se][0]==G[i][0])
a[t_a++]=?i;
for(i=0;?i {
j=a[i];
int?t_j=strlen(G[j]);
if(Is_vt(G[j][t_j-2]))
{
int?t1=?strlen(Lastvt[t_se]);
int?f_xiang=?0;
for(int?m1=0;?m1 {
if(Lastvt[t_se][m1]==G[j][t_j-2])
f_xiang=1;
}
if(!f_xiang)
Lastvt[t_se][t1]=G[j][t_j-2];
}
else
{
if(Is_vt(G[j][t_j-3])?&&?G[
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-06-17?23:46??算符優先文法\
?????文件??????????29??2017-04-27?13:16??算符優先文法\inp.txt
?????文件??????????10??2017-04-27?13:17??算符優先文法\input.txt
?????文件?????????389??2017-05-04?12:58??算符優先文法\Result.txt
?????文件???????????0??2017-05-04?12:33??算符優先文法\新建?Microsoft?Word?文檔.docx
?????文件??????????61??2017-04-23?22:44??算符優先文法\新建文本文檔.txt
?????文件????????9146??2017-05-04?12:59??算符優先文法\算符優先文法.cpp
- 上一篇:北郵算法課貪心算法作業代碼
- 下一篇:共軛梯度法CG-GPU-CUDA代碼
評論
共有 條評論