文档详情

编译原理实验构造有穷状态自动机实验报告.doc

发布:2017-02-05约6.17千字共8页下载文档
文本预览下载声明
西北师范大学计算机科学与工程学院学生实验报告 学 号 201171030117 专业 计算机科学与技术 姓名 来 煜 课程名称 计算机编译原理 班级 2011级计师(1)班 实验名称 从正则文法构造有穷状态自动机 课程类型 必修类 实验目标 1、掌握有穷状态自动机的概念; 2、掌握有穷状态自动机的存储及表示方法; 3、掌握有穷状态自动机与正则文法之间的联系。 实验要求 1、识别有穷状态自动机是确定的还是非确定的; 2、构造的有穷状态自动机以相应的五元组形式输出。 实验代码 #include string.h #include stdio.h #include stdlib.h int main() { char p[30][30]; //存放文法 char q[30][30]; int line = 0; int n; int i, j; int count =0; int k,t = 0; int flag = 0; int l,m = 0; char VN[30] = {\0}; //存放非终结符号 char VT[30] = {\0}; //存放终结符号 printf(请输入规则个数:); scanf(%d,n); line = n; for(i = 0; i 30; i++) //给字符串数组p、q全部赋值为\0 for(j=0;j30;j++) { p[i][j]=\0; q[i][j]=\0; } printf(请输入文法:\n); for(i = 0; i line; i++) { scanf(%s,p[i]); } //把字符分为终结符号合非终结符号 l=0; m=0; for(i = 0;i line; i++) { for(j = 0;j 30(p[i][j] != \0);j++) { // 非终结符号放入数组VN中 if((p[i][j]=z p[i][j]=a)||(p[i][j]=9 p[i][j]=0)) { flag = 0; for(t=0; VN[t] != \0;t++) { if(VN[t] == p[i][j]) { flag = 1; break; } } if(flag == 0) { VN[l] = p[i][j]; l++; } } // 终结符号放入数组VT中 if(p[i][j]=Z p[i][j]=A) { flag = 0; for(t = 0; t30(VT[t] != \0); t++)
显示全部
相似文档