- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理中LL(1)文法的源代码汇总
精品文档
精品文档
收集于网络,如有侵权请联系管理员删除
收集于网络,如有侵权请联系管理员删除
精品文档
收集于网络,如有侵权请联系管理员删除
一. 实验目的
1.掌握LL(1分析法的基本原理
2.掌握LL(1分析表的构造方法
3.掌握LL(1驱动程序的构造方法
二. 实验内容及要求
根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对预测分析LL(1)分析法的理解。
例:对下列文法,用LL(1)分析法对任意输入的符号串进行分析:
(1)E->TG
(2)G->+TG|—TG
(3)G->ε
(4)T->FS
(5)S->*FS|/FS
(6)S->ε
(7)F->(E
(8)F->i
输出的格式如下:
(1LL(1)分析程序,编制人:姓名,学号,班级
(2输入一以#结束的符号串(包括+—*/()i#:在此位置输入符号串
(3输出过程如下:
步骤
分析栈
剩余输入串
所用产生式
1
E
i+i*i#
E->TG
(4输入符号串为非法符号串(或者为合法符号串
备注:(1在“所用产生式”一列中如果对应有推导则写出所用产生式;如果为匹配终结符则写明匹配的终结符;如分析异常出错则写为“分析出错”;若成功结束则写为“分析成功”。
(2 在此位置输入符号串为用户自行输入的符号串。
(3上述描述的输出过程只是其中一部分的。
注意:1.表达式中允许使用运算符(+-*/)、分割符(括号)、字符i,结束符#;
2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);
3.对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照;
4.可采用的其它的文法。
三. 实验过程
LL(1分析法的实验源程序代码如下:
#include
#include
#include
#include
char A[20];/*分析栈*/
char B[20];/*剩余串*/
char v1[20]={'i','+','*','(','','#'};/*终结符 */
char v2[20]={'E','G','T','S','F'};/*非终结符 */
int j=0,b=0,top=0,l;/*L为输入串长度 */
typedef struct type/*产生式类型定义 */
{
char origin;/*大写字符 */
char array[5];/*产生式右边字符 */
int length;/*字符个数 */
}type;
type e,t,g,g1,s,s1,f,f1;/*结构体变量 */
type C[10][10];/*预测分析表 */
void print(/*输出分析栈 */
{
int a;/*指针*/
for(a=0;a<=top+1;a++
printf("%c",A[a];
printf("\t\t";
}/*print*/
void print1(/*输出剩余串*/
{
int j;
for(j=0;j 输出对齐符 */
printf(" ";
for(j=b;j<=l;j++
printf("%c",B[j];
printf("\t\t\t";
}/*print1*/
void main(
{
int m,n,k=0,flag=0,finish=0;
char ch,x;
type cha;/*用来接受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(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';
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
您可能关注的文档
- 绿植租摆服务方案(活动za)教案资料.doc
- 绿大地案例doc资料.ppt
- 绿色工地汇报材料教学教材.doc
- 绿色建筑技术地域性表达培训资料.doc
- 绿色和紫色的画.ppt教学文稿.ppt
- 绿色物流案例分析知识分享.ppt
- 绿色环保及材料应用教程文件.doc
- 绿色施工培训课件教学提纲.pptx
- 绿色环保可持续发展建筑教学内容.docx
- 缓学证明表学习资料.doc
- 仓库保管员述职报告 仓库保管员述职报告总结 (21篇).docx
- 教师高级职称述职报告 教师高级职称述职报告要求字数多少 (17篇).docx
- 加油站经理述职报告 加油站经理述职报告2023年 (17篇).docx
- 销售主管述职报告范文 销售主管述职报告范文大全 (17篇).docx
- 机修班长述职报告 机修班长述职报告 (20篇).docx
- 村干部半年述职报告 村干部半年述职报告 (17篇).docx
- 学生会组织部述职报告 (15篇).docx
- 教师职称评定述职报告 初中教师职称评定述职报告 (17篇).docx
- 信贷述职报告 信贷述职报告怎么写 (17篇).docx
- 入党述职报告范文 入党述职报告范文大全 (19篇).docx
文档评论(0)