编译实验报告LL1分析器.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

编译原理实验报告

实验编号

实验三

实验名称

LL〔1〕分析总控程序的设计与实现

学号:

姓名:

提交日期:

成绩:

二.实验5:LL〔1〕分析总控程序的设计与实现

【实验目的和要求】

设计、编制、调试一个典型的语法分析程序,实现对语法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。要求:

〔1〕程序具有通用性。即所编制的LL〔1〕语法分析程序能够适用于不同文法以及各种输入单词串〔为简单起见,可将单词串视为字符串〕,并能判断文法是否为LL〔1〕文法。

〔2〕有运行实例。对于输入的一个文法和一个单词串,所编制的语法分析程序应能正确地判断,此单词是否为该文法的句子,并要求输出分析过程

图4.1LL〔1〕分析法总控程序流程图

图4.1LL〔1〕分析法总控程序流程图

【实验描述】

根据图4.1所示LL〔1〕分析法总控流程图,编写一个语法分析程序,该语法分析程序实现LL〔1〕算法的分析过程。读者可根据自己的能力情况,选择以下其中一项作为分析算法的输入:

〔1〕直接输入根据文法构造的分析表M。

〔2〕输入文法的集合FIRST〔x〕和FOLLOW〔U〕,由程序自动生成该文法的分析表M。

〔3〕输入文法,由程序自动生成该文法的分析表M。

【主要变量名说明】

/*LL(1)分析法源程序*/

/*

其相应文法为:

E—TG

T—FS

G—+FG|^

S—*FS|^

F—(E)|^

*/

charA[20];/*分析栈*/

charB[20];/*剩余串*/

charv1[20]={i,+,*,(,),#};/*终结符*/

charv2[20]={E,G,T,S,F};/*非终结符*/

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];/*预测分析表*/

【程序清单】

#includestdio.h

#includestdlib.h

#includestring.h

#includedos.h

charA[20];/*分析栈*/

charB[20];/*剩余串*/

charv1[20]={i,+,*,(,),#};/*终结符*/

charv2[20]={E,G,T,S,F};/*非终结符*/

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(\t\t);

}/*print*/

///////////////////////////////////////////////////////////////////////////////////////////////////////////

voidprint1()/*输出剩余串*/

{

intj;

for(j=0;jb;j++)/*输出对齐符*/

printf();

for(j=b;j=l;j++)

printf(%c,B[j]);

printf(\t\t\t);

}/*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;

st

文档评论(0)

展翅高飞2020 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档