编译原理中LL(1)文法的源代码汇总教学文案.doc

编译原理中LL(1)文法的源代码汇总教学文案.doc

ID:57164369

大小:44.00 KB

页数:10页

时间:2020-08-05

编译原理中LL(1)文法的源代码汇总教学文案.doc_第1页
编译原理中LL(1)文法的源代码汇总教学文案.doc_第2页
编译原理中LL(1)文法的源代码汇总教学文案.doc_第3页
编译原理中LL(1)文法的源代码汇总教学文案.doc_第4页
编译原理中LL(1)文法的源代码汇总教学文案.doc_第5页
资源描述:

《编译原理中LL(1)文法的源代码汇总教学文案.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理中LL(1)文法的源代码汇总精品文档一.实验目的1.掌握LL(1分析法的基本原理2.掌握LL(1分析表的构造方法3.掌握LL(1驱动程序的构造方法二.实验内容及要求根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对预测分析LL(1)分析法的理解。例:对下列文法,用LL(1)分析法对任意输入的符号串进行分析:(1)E->TG(2)G->+TG

2、—TG(3)G->ε(4)T->FS(5)S->*FS

3、/FS(6)S->ε(7)F->(E(8)F->i输出的格式如下:(1LL(1)分析程序,编制人:姓名,学号,班级(

4、2输入一以#结束的符号串(包括+—*/()i#:在此位置输入符号串(3输出过程如下:步骤分析栈剩余输入串所用产生式1Ei+i*i#E->TG收集于网络,如有侵权请联系管理员删除精品文档(4输入符号串为非法符号串(或者为合法符号串备注:(1在“所用产生式”一列中如果对应有推导则写出所用产生式;如果为匹配终结符则写明匹配的终结符;如分析异常出错则写为“分析出错”;若成功结束则写为“分析成功”。(2在此位置输入符号串为用户自行输入的符号串。(3上述描述的输出过程只是其中一部分的。注意:1.表达式中允许使用运算符(+-*/)、分割符(括号)、字符i,结束符#;2.如果遇到错

5、误的表达式,应输出错误提示信息(该信息越详细越好);3.对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照;4.可采用的其它的文法。三.实验过程LL(1分析法的实验源程序代码如下:#include#include#include#includecharA[20];/*分析栈*/charB[20];/*剩余串*/charv1[20]={'i','+','*','(','','#'};/*终结符*/charv2[20]={'E','G','T','S','F'};/*非终结

6、符*/intj=0,b=0,top=0,l;/*L为输入串长度*/typedefstructtype/*产生式类型定义*/{收集于网络,如有侵权请联系管理员删除精品文档charorigin;/*大写字符*/chararray[5];/*产生式右边字符*/intlength;/*字符个数*/}type;typee,t,g,g1,s,s1,f,f1;/*结构体变量*/typeC[10][10];/*预测分析表*/voidprint(/*输出分析栈*/{inta;/*指针*/for(a=0;a<=top+1;a++printf("%c",A[a];printf("tt

7、";}/*print*/voidprint1(/*输出剩余串*/{intj;for(j=0;j输出对齐符*/printf("";for(j=b;j<=l;j++printf("%c",B[j];printf("ttt";}/*print1*/voidmain({intm,n,k=0,flag=0,finish=0;收集于网络,如有侵权请联系管理员删除精品文档charch,x;typecha;/*用来接受C[m][n]*//*把文法产生式赋值结构体*/e.origin='E';strcpy(e.array,"TG";e.length=2;t.origin='T'

8、;strcpy(t.array,"FS";t.length=2;g.origin='G';strcpy(g.array,"+TG";g.length=3;g1.origin='G';g1.array[0]='^';g1.length=1;s.origin='S';strcpy(s.array,"*FS";s.length=3;s1.origin='S';s1.array[0]='^';s1.length=1;f.origin='F';strcpy(f.array,"(E";f.length=3;f1.origin='F';收集于网络,如有侵权请联系管理员删除精品文档

9、f1.array[0]='i';f1.length=1;for(m=0;m<=4;m++/*初始化分析表*/for(n=0;n<=5;n++C[m][n].origin='N';/*全部赋为空*//*填充分析表*/C[0][0]=e;C[0][3]=e;C[1][1]=g;C[1][4]=g1;C[1][5]=g1;C[2][0]=t;C[2][3]=t;C[3][1]=s1;C[3][2]=s;C[3][4]=C[3][5]=s1;C[4][0]=f1;C[4][3]=f;printf("提示:本程序只能对由'i','+','*','(',''构成的以'#'结

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

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

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