
编译原理概念总结~~~给个详细点的
这里的概念很全,也很好懂。
编译原理实验报告
#includevoid main(){int m=0,n=0,n1=0,n2=0,n3=0,zg,fzg,flag;int bz[7]=;\\\/*状态改变控制,1 表示可以改变状态zt值,0 表示不可以*\\\/int zt[7]=;\\\/*状态值,2表示未定状态,1表示 是,0表示 否*\\\/char temp[100]=\\\\0;\\\/*用于求first集*\\\/char z[7];\\\/*非总结符*\\\/char z1[7];\\\/*总结符*\\\/char z2[7]=\\\\0;\\\/*gs[]文法中出现的标记个数的辅助字符 01234*\\\/char gs[100]=\\\\0;\\\/*文法,按顺序排成字符串*\\\/printf(请依次输入非终结符(不超过7个):);gets(z);while(z[m]!='\\\\0')fzg=m;\\\/\\\/zg是非终结符个数while(nAB S-->bC A-->k A-->b\\\ );printf(输入:0SAB0SbC1Ak1Ab\\\ );printf( (注:数字01234表示第一二三四个非终结符)\\\ );gets(gs);fflush(stdin);printf(您输入了:);puts(gs);m=0;\\\/\\\/对于输入文法字符串的转换,将每个文法式左部去除while(gs[m]!='\\\\0'){n=m;if(gs[m]>='0'&&gs[m]<='9'){m++;while(gs[m]!='\\\\0'){gs[m]=gs[m+1];m++;}\\\/\\\/gs[m-1]='\\\\0';}m=++n;}m=0;\\\/\\\/puts(gs);\\\/*情况一,直接判定是 形如: (A-->k) *\\\/while(gs[m]!='\\\\0'){if(gs[m]=='k'){zt[gs[m-1]-48]=1;bz[gs[m-1]-48]=0;}m++;}\\\/*情况二,直接判定--否 形如: (D-->aS ,D-->c) *\\\/for(n=0;n=z1[0]&&gs[m+1]<=z1[n1-1])zt[n]=0;else \\\/\\\/gs[m+1] 是非终结符n2做标记} \\\/\\\/跳出循环,无法解决该情况,推到下面情况三m++;}if(n2!=99) \\\/\\\/完成所有扫描,未出现非终结符,得出结论zt[n]=0.bz[n]=0不允许再改变zt[n]}}\\\/*情况三,最终判定*\\\/do{flag=0;for(n=0;n='A'&&gs[m]<='Z') {n1=0;for(n2=0;n2='0'&&gs[n]<='9'){for(;m'9') {if(n1==0) \\\/\\\/如果是第一个直接保存\\\/\\\/不是第一个,先与字符数组中其它字符比较,没相同的才保存else if(gs[n]>='a'&&gs[n]<='z'&&gs[n+1]>='A'&&gs[n+1]<='Z') \\\/\\\/gs[n]是终结符 且 gs[n+1]是非终结符;\\\/\\\/什么也不做,程序继续n++,扫描下一个gs[n]else {for(n3=0;n3<=n1;n3++){if(temp[m*13+n3]==gs[n+1])break;}if(n3>n1) \\\/\\\/for循环结束是因为n3而不是break}n++;}break; \\\/\\\/break位于if(gs[n]==z2[m]),对于gs[n]已找到z2[m]完成任务跳出for循环}}n2=m; \\\/\\\/存放该for循环中m的值n++;}\\\/\\\/进一步处理集除去非终结符m=0;n=0;n1=0;n2=0;for(m=0;m='A'&&temp[m*13+n1]<='Z') \\\/\\\/搜索非终结符{for(n=0;n=n1) \\\/\\\/for循环结束是因为n3而不是break,即无相同字符else n2++;}n1=0;n2=0;}n1++;}flag=m; \\\/\\\/存放该for循环中m的值}\\\/\\\/非终结符的first集输出m=0;n1=0;for(m=0;m懂编译原理的请进! 听说编译原理涉及很多有意思的算法,有没有看过的人总结一下,我一一到网上搜,只是
这个是1型语言
编译原理的终结符和非终结符如何理解?
终结符,通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行 推导。
不是终结符的都是非终结符。
非终结符可理解为一个可拆分元素,而终结符是不可拆 分的最小元素。
编译原理中“翻译程序”如何理解
计算机实验心得体会 篇一:大学计算机基础实验体会 大学计算机基础实验体会 大学计算机基础这门课是一门基础应用类课程,目的是让我们了解计算机硬件组成,简单的运行原理,以及各类常用软件的使用。
这个周末,我们完成了基础实验6、7、8。
本来以为会很简单的几个实验却花费了我们大量的时间,名且发现了很多问题,我才知道这门课程并不像我们想象的那么简单单学到的知识恰恰和难度成正比,这三个实验着实让我受益匪浅。
这次实验作业中,主要的问题都出在word文档的应用中。
我们普遍都用惯了老式的word2000或者word2003,所以对word2007不熟悉,于是造成了很多麻烦,尤其是添加目录这个新功能,摸索了好久依然毫无头绪。
最后不得已只能拿出教材自习阅读,同时上网找了很多详细的讲解,最后才完成了实验6。
在做powerpoint时候,可能是因为平时做过很多的原因,并没有遇到什么很明显的问题和困难, 但是为了能把PPT 做得精美和详细,也花费了不少的时间。
最后一项是excel的应用。
我以前对它的接触不多,所以对其应用也是最不熟练最不明白的。
但是通过自主的对其学习,尤其是对教材的阅读,使我能运用一些比较基本的功能进行表格制作。
同时也了解了很多以前不知道简便功能。
可以说,动过这次试验,我学到的最多的知识,就是excel 的应用了。
虽然这次试验作业已经完成,但是它给我的启发让我思考至今。
首先,本已经在课堂上学习过的内容,为什么在