编译原理实验二----LL.doc

编译原理实验二----LL.doc

ID:57428288

大小:64.50 KB

页数:5页

时间:2020-08-17

编译原理实验二----LL.doc_第1页
编译原理实验二----LL.doc_第2页
编译原理实验二----LL.doc_第3页
编译原理实验二----LL.doc_第4页
编译原理实验二----LL.doc_第5页
资源描述:

《编译原理实验二----LL.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验二LL(1)分析法一、实验目的:根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对预测分析LL(1)分析法的理解。二、实验内容:(1)请输出完整的分析过程,即详细输出每一步骤分析栈和剩余串的变化情况,及每一步所用的产生式。(2)请输出最终的分析结果,即输入串“合法”或“非法”。(3)示例程序只能完成+、-、*、(、)的语法分析,请加入-和/的语法分析。三、实验要求:实验规定对下列文法,用LL(1)分析法对任意输入的符号串进行分析:(1)E::=TG(

2、2)G::=+TG(3)G::=ε(4)T::=FS(5)S::=*FS(6)S::=ε(7)F::=(E)(8)F::=i若输入串为i+i*i#则输出为:步骤分析栈剩余串产生式 1#E i+i*i#E→TG 2#GT i+i*i# T→FS 3#GSF  i+i*i#F→i 4#GSi i+i*i#i 5#GS  +i*i#S→є 6 #G +i*i#G→+TG 7 #GT+ +i*i#+……………….……四、实验源代码:#include#include#inc

3、lude#includecharA[20];/*分析栈*/charB[20];/*剩余串*/charv1[20]={'i','+','-','*','/','(',')','#'};/*终结符*/charv2[20]={'E','G','T','S','F'};/*非终结符*/intj=0,b=0,top=0,l;/*L为输入串长度*/typedefstructtype{/*产生式类型定义*/charorigin;/*大写字符*/chararray[7];/*产生式右

4、边字符*/intlength;/*字符个数*/}type;typee,t,g,g0,g1,s,s0,s1,f,f1;/*结构体变量*/typeC[10][10];/*预测分析表*/voidprint(){/*输出分析栈*/inta;/*指针*/for(a=0;a<=top+1;a++)printf("%c",A[a]);printf("tt");}/*print*/voidprint1(){/*输出剩余串*/intj;for(j=0;j

5、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';strcpy(t.array,"FS");t.length=2;g.origin='G';strcpy

6、(g.array,"+TG");g.length=3;g0.origin='G';strcpy(g0.array,"-TG");g0.length=3;g1.origin='G';g1.array[0]='^';g1.length=1;s.origin='S';strcpy(s.array,"*FS");s.length=3;s0.origin='S';strcpy(s0.array,"/FS");s0.length=3;s1.origin='S';s1.array[0]='^';s1.length=

7、1;f.origin='F';strcpy(f.array,"(E)");f.length=3;f1.origin='F';f1.array[0]='i';f1.length=1;for(m=0;m<=4;m++)/*初始化分析表*/for(n=0;n<=7;n++)C[m][n].origin='N';/*全部赋为空*//*填充分析表*/C[0][0]=e;C[0][5]=e;C[1][1]=g;C[1][2]=g0;C[1][6]=g1;C[1][7]=g1;C[2][0]=t;C[2][5]=t

8、;C[3][1]=s1;C[3][2]=s1;C[3][3]=s;C[3][4]=s0;C[3][6]=s1;C[3][7]=s1;C[4][0]=f1;C[4][5]=f;printf("提示:本程序只能对由'i','+','-','*','/','(',')'构成的以'#'结束的字符串进行分析,");printf("请输入要分析的字符串:");do{/*读入分析串*/scanf("%c",&ch);if((ch!='i')&&(ch!='+'

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

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

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