没有合适的资源?快使用搜索试试~ 我知道了~
编译原理实验报告-合肥工业大学版.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 93 浏览量
2022-07-13
01:43:53
上传
评论 2
收藏 1.32MB PDF 举报
温馨提示
试读
33页
编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf编译原理实验报告-合肥工业大学版.pdf
资源推荐
资源详情
资源评论
编译原理实验报告
合肥工业大学计算机科学与技术
完成日期:2013.6.3
实验一 词法分析设计
一、实验功能:
对输入的 txt 文件内的内容进行词法分析:
由文件流输入 test.txt 中的内容,
对文件中的各类字符进行词法分析
打印出分析后的结果;
二、程序结构描述:(源代码见附录)
1、利用 Key[]进行构造并存储关键字表;利用 optr[]进行构造并存储运算符表;
利用 separator[]进行构造并存储分界符表;
2、
bool IsKey(string ss) {}判断是否是关键字函数若是关键字返回 true,否则返回 false;
bool IsLetter(char c) {}判断当前字符是否字母,若是返回 true,否则返回 false;
bool IsDigit(char c) {}判断当前字符是否是数字,若是返回 true,否则返回 false;
bool IsOptr(string ss) {}判断当前字符是否是运算符,若是返回 true,否则返回 false;
bool IsSeparator(string ss) {}判断当前字符是否是分界符,若是返回 true,否则返回 false;
void analyse(ifstream &in) {}分析函数构造;
关系运算符通过 switch 来进行判断;
三、实验结果
实验总结:
词法分析的程序是自己亲手做的,在实现各个函数时花了不少功夫,
1、要考虑到什么时候该退一字符,否则将会导致字符漏读甚至造成字符重复读取。
2、在实现行数和列数打印时要考虑到 row++和 line++应该放在什么位置上才可以,如当读
取一个\n 时 line 要增加一,而 row 需要归 0 处理,在读取某一字符串或字符后 row 需要加
一;
3、对于关系运算符用 switch 结构进行选择判断即可解决一个字符和两个字符的运算符之间
的差异;
4、将自己学过的知识应用到实践中是件不怎么容易的事情,只有亲身尝试将知识转化成程
序才能避免眼高手低,对于知识的理解也必将更加深刻。
实验二 LL(1)分析法
一、实验原理:
1、
写出 LL(1)分析法的思想:当一个文法满足 LL(1)条件时,我们就可以
为它构造一个不带回溯的自上而下的分析程序,这个分析程序是有一组递归过程
组成的,每个过程对应文法的一个非终结符。实现 LL(1)分析的一种有效的方法
是使用一张分析表和一个站进行联合控制。预测分析表是一个 M[A,a]形式的矩
阵,存储着分析规则;栈 STACK 用于存放文法符号。从栈顶取符号,按照分析
表给出的规则进行有步骤的分析。
2.实验要求实现的文法:
(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)定义部分:定义常量、变量、数据结构。
(2)初始化:设立 LL(1)分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量
等);
(3)控制部分:从键盘输入一个表达式符号串;
(4)利用 LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式符号串进行堆栈(或
其他)操作,输出分析结果,如果遇到错误则显示错误信息。
程序各个部分的实现:
(1)Vn[]存储非终结符数组;
Vt[]存储终结符数组;
char strToken[Length];//存储规约表达式
struct LL//ll(1){char *c}分析表的构造字初始化
Class stack 实现栈的要求功能:初始化,判断空满,入栈出栈等;
Run()函数实现 LL(1)文法分析的函数:先将表达式字符入栈,#最先入栈底,依次取栈顶
符号,查和符号栈和分析表,进行相应的操作。
三、实验结果:
测试方法:运行程序,输入需要分析的语句
测试结果如下
:
剩余32页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8245
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功