资源简介
编译原理 算符优先文法 实验报告 代码 运行成功////////////

代码片段和文件信息
#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
文件 9146 2017-05-04 12:59 算符优先文法\算符优先文法.cpp
相关资源
- 编译原理实验工具及参考源码(lex&
- 类pascal语言编译器(编译原理实验)
- 编译原理课程设计:词法语法编译器
- 中科院 编译原理 习题及解答
- 编译原理四元式和逆波兰式
- 《编译原理》清华大学版中的pl0扩充
- PL/0功能扩充break功能
- 编译原理LR(0)语法分析
- 编译原理中间代码生成程序
- 编译原理:LR分析程序
- 编译原理实验:词法分析,语法分析
- 吉林大学编译原理课件
- 编译原理龙书答案
- 编译原理 第三章课后习题答案
- 易语言变量和数组的编译原理
- 编译原理语法分析器、词法分析器
- 山东大学编译原理PL/0语言 compiler实验
- FOR循环语句的翻译程序设计简单优先
- NFA的确定化NFA->DFA完整可运行代码
- 哈工大威海编译原理实验报告和源代
- 哈工大威海-编译原理实验报告和源码
- 编译原理课设c编译器
- 赋值语句翻译四元式
- 河北工业大学编译原理实验代码及实
- 编译原理课程设计 while do循环语句翻
- 编译原理课程设计do——while简单优先
- 南开大学编译原理课件及作业
- 华工往年编译原理试卷
- 编译原理课程设计for循环LR法三元式
- 哈工程-编译原理课程设计(2016级)
评论
共有 条评论