当前位置:首页 > 编译原理 课程实验报告 LL1
编译原理 课程实验报告
班级学号: 132055222 姓名:
实验名称: 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
输出的格式如下:
(1)LL(1)分析程序,编制人:姓名,学号,班级
(2)输入一以#结束的符号串(包括+—*/()i#):在此位置输入符号串 (3)输出过程如下: 步骤 分析栈 剩余输入串 所用产生式
1 E i+i*i# E->TG (4)输入符号串为非法符号串(或者为合法符号串) 备注:
(1)在“所用产生式”一列中如果对应有推导则写出所用产生式;如果为匹配终结符则写明匹配的终结符;如分析异常出错则写为“分析出错”;若成功结束则写为“分析成功”。
(2) 在此位置输入符号串为用户自行输入的符号串。 (3)上述描述的输出过程只是其中一部分的。 注意:
1.表达式中允许使用运算符(+-*/)、分割符(括号)、字符i,结束符#;
2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);
三、实验过程:
1.模块设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情。
2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。
3.程序编写
(1)定义部分:定义常量、变量、数据结构。 Vt:终结符下标映射集。 Vn:非终结符下标映射集。 T :LL(1)分析表。
Sym:符号栈,it为其栈顶,为方便输出用vector模拟。 In :输出串。
St :规约时所用产生式。
(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体、
数组、临时变量等);
(3)控制部分:从键盘输入一个表达式符号串;
(4)利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式
符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。
四、实验结果:
(1)写出程序流程图
功能分析图
主程序流程图
(2)给出运行结果
共分享92篇相关文档