西北师范大学数信学院学生报告

西北师范大学数信学院学生报告

ID:31578403

大小:2.19 MB

页数:9页

时间:2019-01-13

西北师范大学数信学院学生报告_第1页
西北师范大学数信学院学生报告_第2页
西北师范大学数信学院学生报告_第3页
西北师范大学数信学院学生报告_第4页
西北师范大学数信学院学生报告_第5页
资源描述:

《西北师范大学数信学院学生报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、课程实践报告书西北师范大学数信学院学生实验报告学号:2009710301022011年09月07日系别计算机科学系专业计算机科学与技术(师范一班)班级09计师一班姓名陈建峰课程名称编译原理课程类型必修课学时数周2实验名称一.文法的输入与输出一.实验目的:1.掌握文法在计算机内的存储表示;2.输入任意的上下文无关文法;3.以四元组的形式输出Chomsky文法。二.内容和步骤:叙述本次实验的实现方法、分析、实现了哪些功能、给出一个或多个测试用例及其预期运行结果,要求能够反映本次实验的成果。1.本次实验的实现方法为:采用数组的形式实现文法在机内的存储表示。

2、2.本次试验的问题分析为:一是文法的输入形式;二是文法在计算机内的存储表示形式。3.本次试验应实现以下功能:输入一个文法的识别符号与重写规则,输出文法的四要素VN,VT,P,Z。4.测试实例:实例一:输入文法G1[E]:E::=E+T

3、TT::=T*F

4、FF::=(E)

5、i实例二:输入文法G2[Z]:Z::=aZb

6、abZ::=CSdS::=CSd

7、Cd实例三:输入文法G3[E]:E::=T

8、E+T

9、E-TT::=F

10、T*F

11、T/FF::=(E)

12、i实例四:输入文法:G4[Z]:Z::=Ab

13、cA::=Aab

14、ab::=cbD

15、dd::=bDd

16、D三

17、.源程序代码:9课程实践报告书实例一:输入文法G1[E]:E::=E+T

18、TT::=T*F

19、FF::=(E)

20、i/*IOGrammar.c*///文法的输入与输出//作者:西北师范大学-数学与信息科学学院-2009级计算机科学与技术师范一班-200971030102-陈建峰//编程时间:2011年09月07日-2011年10月12日#includecharGName[10];typedefcharSymbolT;SymbolTStartSymbol;//识别符号的类型为chartypedefstruct{SymbolTLeftSym

21、;//规则的左部符号SymbolTRightpart[20];//规则的右部符号的集合intRightLength;//规则右部符号的长度}RuleTC;RuleTCGrammarC[20];SymbolTVT[20];//终结符号的集合SymbolTVN[20];//非终结符号的集合intNVN=0,NVT=0;//给终结符号的个数和非终结符号的个数置初值typedefstruct{intLeftSymNum;//左部符号的序号intRightpartNum[20];//右部符号的序号所组成的集合intRightLength;//右部符号的长度}R

22、uleT;//规则类型RuleTGrammar[20];intRuleN;//规则的个数charStartSym;//识别符号charInput[][20]={"E::=E+T

23、T","T::=T*F

24、F",9课程实践报告书"F::=(E)

25、i",""};//用数组存储规则intLineNumofG=3;//规则的行数为3行voidGetGrammar(){/*把暂存文法中一切符号替换为相应序号,同时存入结果文法中*//*非终结符号时序号加100*/charLeftS,Sym;intk,j,m;StartSym=GrammarC[1].LeftS

26、ym;//第一条规则的左部符号是文法的识别符号for(k=1;k<=RuleN;k++){LeftS=GrammarC[k].LeftSym;//把每一条规则的左部符号存放在LeftS中for(j=1;j<=NVN;j++)if(LeftS==VN[j]){Grammar[k].LeftSymNum=j+100;break;}for(j=1;j<=GrammarC[k].RightLength;j++){Sym=GrammarC[k].Rightpart[j];//把每一条规则的右部符号存放在Sym中for(m=1;m<=NVN;m++)if(Sym

27、==VN[m])//如果Sym中有非终结符号{Grammar[k].RightpartNum[j]=m+100;break;}if(m<=NVN)continue;for(m=1;m<=NVT;m++)9课程实践报告书if(Sym==VT[m])//如果Sym中有终结符号{Grammar[k].RightpartNum[j]=m;break;}}Grammar[k].RightLength=GrammarC[k].RightLength;}}voidstoreG()//存储文法的函数storeG(){/*把Input中的输入文法存放在过渡文法中*/i

28、ntrow,colum,k,j,m;charsym,U;RuleN=0;row=0;NVN=NVT=0;wh

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。