#include<stdio.h>
#include<string.h>
char *action[10][3]={"S3#","S4#",NULL, /*ACTION表*/
NULL,NULL,"acc",
"S6#","S7#",NULL,
"S3#","S4#",NULL,
"r3#","r3#",NULL,
NULL,NULL,"r1#",
"S6#","S7#",NULL,
NULL,NULL,"r3#",
"r2#","r2#",NULL,
NULL,NULL,"r2#"};
int goto1[10][2]={
1,2, /*QOTO表*/
0,0,
0,5,
0,8,
0,0,
0,0,
0,9,
0,0,
0,0,
0,0};
char vt[3]={'a','b','#'}; /*存放非终结符*/
char vn[2]={'S','B'}; /*存放终结符*/
char *LR[4]={"E->S#","S->BB#","B->aB#","B->b#"};/*存放产生式*/
int a[10]; char b[10],c[10],c1; int top1,top2,top3,top,m,n;
void main(){
int g,h,i,j,k,l,p,y,z,count;
char x,copy[10],copy1[10];
top1=0;top2=0;top3=0;top=0;
a[0]=0;y=a[0];b[0]='#';
count=0;z=0;
printf("--------------编译原理课程设计--------------\n");
printf("-------------------许茹怡-------------------\n");
printf("----------------201412211154----------------\n");
printf("----------------请输入表达式--------------\n");
do{
scanf("%c",&c1);
c[top3]=c1;
top3=top3+1;
}while(c1!='#');
printf("步骤\t状态栈\t\t符号栈\t\t输入串\t\tACTION\tGOTO\n");
do{
y=z;m=0;n=0; /*y,z指向状态栈栈顶*/
g=top;j=0;k=0;
x=c[top];
count++;
printf("%d\t",count);
while(m<=top1){ /*输出状态栈*/
printf("%d",a[m]);
m=m+1;
}
printf("\t\t");
while(n<=top2){ /*输出符号栈*/
printf("%c",b[n]);
n=n+1;
}
printf("\t\t");
while(g<=top3){ /*输出输入串*/
printf("%c",c[g]);
g=g+1;
}
printf("\t\t");
while(x!=vt[j]&&j<=2) j++;
if(j==2&&x!=vt[j]){
printf("error\n");
return;
}
if(action[y][j]==NULL){
printf("error\n");
return;
}
else
strcpy(copy,action[y][j]);
if(copy[0]=='S'){ /*处理移进*/
z=copy[1]-'0';
top1=top1+1;
top2=top2+1;
a[top1]=z;
b[top2]=x;
top=top+1;
i=0;
while(copy[i]!='#'){
printf("%c",copy[i]);
i++;
}
printf("\n");
}
if(copy[0]=='r'){ /*处理归约*/
i=0;
while(copy[i]!='#'){
printf("%c",copy[i]);
i++;
}
h=copy[1]-'0';
strcpy(copy1,LR[h]);
while(copy1[0]!=vn[k]) k++;
l=strlen(LR[h])-4;
top1=top1-l+1;
top2=top2-l+1;
y=a[top1-1];
p=goto1[y][k];
a[top1]=p;
b[top2]=copy1[0];
z=p;
printf("\t");
printf("%d\n",p);
}
}
while(action[y][j]!="acc");
printf("acc\n");
getchar();
}
林当时
- 粉丝: 114
- 资源: 1万+
最新资源
- 基于Neo4j图数据库的医疗知识图谱智能问答机器人详细文档+全部资料+优秀项目.zip
- 基于rasa框架的知识图谱问答详细文档+全部资料+优秀项目.zip
- 基于streamlit+neo4j构建的简易知识图谱问答系统详细文档+全部资料+优秀项目.zip
- 基于大语言模型API(本地或商用API)的外挂知识库问答系统(附neo4j实现知识图谱)详细文档+全部资料+优秀项目.zip
- 基于大模型 RAG 知识库与知识图谱的问答平台。详细文档+全部资料+优秀项目.zip
- 基于农业领域知识图谱的构建,包括数据爬取(百度百科)、数据分类、利用结构化数据生成三元组、非基于依存句法分析(主谓关系等)的关系抽取和利用neo4j生成可视化知
- 基于英雄联盟知识图谱的问答详细文档+全部资料+优秀项目.zip
- 基于知识图谱的出版物检索系统详细文档+全部资料+优秀项目.zip
- 基于突发事件本体模型和知识图谱的构建详细文档+全部资料+优秀项目.zip
- 基于知识图谱的电影智能问答。neo4j构建电影图谱,spark ml完成问答意图分类,将问答语句转为cypher查询语句完成匹配查询。详细文档+全部资料+优秀项目.zip
- 基于知识图谱的单轮对话系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱的古诗词问答系统,数据库使用neo4j详细文档+全部资料+优秀项目.zip
- 基于知识图谱的会展知识问答系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱的科技政策管理系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱的林业法律法规问答详细文档+全部资料+优秀项目.zip
- 基于知识图谱的推荐算法-KGCN实现详细文档+全部资料+优秀项目.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈