编译原理上机三讲课讲稿.docx

编译原理上机三讲课讲稿.docx

ID:57164370

大小:54.20 KB

页数:9页

时间:2020-08-05

编译原理上机三讲课讲稿.docx_第1页
编译原理上机三讲课讲稿.docx_第2页
编译原理上机三讲课讲稿.docx_第3页
编译原理上机三讲课讲稿.docx_第4页
编译原理上机三讲课讲稿.docx_第5页
资源描述:

《编译原理上机三讲课讲稿.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理上机三精品文档学号成绩编译原理上机报告上机题目编写语法分析分析器上机时间11月18日学院信息与控制工程学院专业计算机科学与技术班级计算机1301班姓名周砚豪一、实验目的通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。1、选择最有代表性的语法分析方法,如LL(1)语法分析程序、算符优先分析程序和LR分析分析程序,并至少完成两个题目。2、选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。二、实验过程(一)根据分析法总控制流程图,编写一个分析对

2、象的语法分析程序。可根据自己的能力选择以下三项(由易到难)之一作为分析算法中的输入:1.直接输入根据已知文法人工构造的分析表M。2.输入已知文法的集合FIRST(x)和FOLLOW(U),由程序自动生成该文法的分析表M。3.输入已知文法,由程序自动生成该文法分析表M。??(二收集于网络,如有侵权请联系管理员删除精品文档)程序具有通用性,即所编制的LL(1)语法分析程序能够适用于不同文法以及各种?输入单词串,并能判断该文法是否为算符文法和算符优先文法。??(三)有运行实例。对于输入的一个文法和一个单词串,所编制的语法分析程序应能正确地判断,此单词串是否为该文法的句子,并要求输出分析过程。?

3、?三、实验结果四、讨论与分析LL(1)文法的判定:对于文法G的每一个非终结符U的产生式:U→α1

4、α2

5、…

6、αn。如果文法G是一个LL(1)文法,则有SELECT(U→αi)∩SELECT(U→αj)=Ф(i≠j,i,j=1,2,…,n)。SELECT集的构造:SELECT(U→α)=?FIRST(α),当α不空FIRST(α)∪FOLLOW(U),否则LL(1)分析表构造算法:?对于每个产生式U→α,执行下一步骤:1、对于每个终结符号:a∈FIRST(α),M[U,a]=?→α?;?2、如果e∈FIRST(α?),对于每个终结符号:b∈FOLLOW(U),M[U,b]=?→α?;?3、

7、将其它未定义的分析元素置为ERROR。收集于网络,如有侵权请联系管理员删除精品文档四、附录:关键代码/*LL(1)分析法源程序,只能在VC++中运行*/#include<>#include<>#include<>#include<>charA[20];/*分析栈*/charB[20];/*剩余串*/charv1[20]={'i','+','*','(',')','#'};/*终结符*/charv2[20]={'E','G','T','S','F'};/*非终结符*/intj=0,b=0,top=0,l;/*L为输入串长度*/typedefstructtype/*产生式类型定义*/{cha

8、rorigin;/*大写字符*/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");}/*print*/voidprint1()/*输出剩余串*/{intj;for(j=0;j

9、");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';strcpy,"TG");=2;='T';strcpy,"FS");=2;='G';strcpy,"+TG");=3;='G';[0]='^';=1;='S';strcpy,"*FS");=3;='S';[0]='^';=1;='F';收集于网络,如有侵权请联系管理员删除精品文档s

10、trcpy,"(E)");=3;='F';[0]='i';=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]

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

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

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