没有合适的资源?快使用搜索试试~ 我知道了~
编译原理课设[归纳].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 96 浏览量
2021-10-12
06:02:25
上传
评论
收藏 632KB PDF 举报
温馨提示
试读
31页
编译原理课设[归纳].pdf
资源推荐
资源详情
资源评论
编译技术课程设计
班 级
学 号
姓 名
指导老师
2015 年 6 月
第 1 页
目录
一、目的 ........................................................................................................................................... 2
二、题目 ........................................................................................................................................... 2
三、要求 ........................................................................................................................................... 2
1.词法分析 ........................................................................................................................ 2
2.语法分析 ........................................................................................................................ 2
3.代码生成 ........................................................................................................................ 2
4.错误处理 ........................................................................................................................ 2
四、实验环境 ................................................................................................................................... 3
1.开发环境 : ....................................................................................................................... 3
2.程序语言 : ....................................................................................................................... 3
五、系统实现 ................................................................................................................................... 3
1.词法分析 ........................................................................................................................ 3
2.语法分析 ........................................................................................................................ 5
3.中间代码 ........................................................................................................................ 6
4.错误处理 ...................................................................................................................... 11
六、程序运行结果 ......................................................................................................................... 12
1.连乘 .............................................................................................................................. 12
2.连加 .............................................................................................................................. 12
3.加乘混合 ...................................................................................................................... 13
4.带括号 .......................................................................................................................... 13
5.常数 .............................................................................................................................. 14
6.错误的算术表达式 ...................................................................................................... 14
七、总结 ......................................................................................................................................... 16
第 2 页
一、目的
<<编译技术 >>是理论与实践并重的课程, 而其课程设计要综合运用一、 二年级所学的多
门课程的内容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、
语义分析、 代码生成和报错处理等理论的认识和理解; 培养学生对完整系统的独立分析
和设计的能力,进一步培养学生的独立编程能力。
二、题目
题目 1 表达式的小型编译器
三、要求
1.词法分析
产生语言的单词序列
2.语法分析
能识别由加 + 乘* 括号()操作数(变量或常数)所组成的算术表达式,其文法如
下:
E→ E+T|T
T→ T*F|F
F→ (E)|i
使用的分析方法可以是:递归下降分析法或 LR分析法。
3.代码生成
产生上述算术表达式的中间代码
4.错误处理
给出错误信息
输入:算术表达式
输出:符号表,常数表。
归下降分析法:递归调用过程 / LR 分析法:语义栈和符号栈
四元式序列
第 3 页
四、实验环境
1.开发环境 :
Visual Studio 2013
2.程序语言 :
C++
五、系统实现
1.词法分析
(1)单词符号表
单词符号 种别编码 内码值
标识符 6 标识符本身的字符串
常数 7 常数本身的值
+ 8 +
* 10 *
( 14 (
) 15 )
# 16 #
第 4 页
(2)状态转换图
0
开始 字母
1
空白
字母或数字
非字母或数字
2
数字
3
数字
非数字
4
5
6
7
+
*
#
(3)数据结构
int cf[] 词法分析后的种别编码
int value1[] 若种别编码为常数 , 此数组存放常数值 , 其他为空
string value2[] 若种别编码为标识符 , 此数组存放标识符名 , 其他为空
(4)函数说明
void getonechar() /* 从输入的算数表达式中读取一个字符 */
void concatenation() /* 将 token 中的字符串与 character 中的字符并作为 token
中新的字符串 */
bool letter() / * 判断 character 中的字符是否为字母的布尔函数 , 是则返
回 true, 否侧返回 false*/
bool digit() / * 判断 character 中的字符是否为数字的布尔函数 , 是则返
回 true, 否侧返回 false */
void retract() / * 扫描指针回退一个字符 , 同时将 character 置为空白 */
int reserve() /* 将 token 中的字符查找保留字数组 , 若是保留字就返回它
的种别编码 , 否则返回 0*/
void buildlist1() /* 将标识符登录到符号表中 (value2[])*/
void buildlist2() /* 将常数登录到常数表中 (value1[])*/
void resolve() /* 词法分析的主要函数 , 每次识别一个单词 , 将种别编码放
入 cf[] 中, 填入对应的 value1[] 和 value[]*/
void cffx() /* 词法分析 , 读入输入的算数表达式 , 循环执行 resolve(),
剩余30页未读,继续阅读
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功