编译原理课设 (中版)
更新时间:2023-05-10 01:35:01 阅读量: 实用文档 文档下载
- 编译原理课设报告推荐度:
- 相关推荐
编译原理课程设计
简单编译器
学 院(系):电子信息与电气工程学部 学 生 姓 名:李梦珂 学 号:201181216 班 级:电计1101 同 组 人 :宫丽迪 电计1101 201181306
陈笛 电计1101 201181326
大连理工大学
Dalian University of Technology
目 录
1 词法分析 ............................................................... 2
1.1 实验目的 ......................................................... 2 1.2 实验要求 ......................................................... 2
1.2.1待分析的简单的词法 .......................................... 2 1.2.2 各种单词符号对应的种别码: ................................. 2 1.2.3 词法分析程序的功能: ....................................... 3 1.3 词法分析程序的算法思想: ......................................... 3
1.3.1 主程序示意图: ............................................. 3 1.3.2 扫描子程序的算法思想: ..................................... 4 1.3.3 词法分析程序的C语言程序源代码: ........................... 6 1.3.4 结果分析: ................................................. 6 1.3.5 总结: ..................................................... 7
2 语法分析 ............................................................... 8
2.1 实验目的 ......................................................... 8 2.2实验要求 .......................................................... 8
2.2.1 待分析的简单语言的语法 ..................................... 8 2.2.2 实验算法结构 ............................................... 8 语法分析程序的算法思想 ............................................ 8 2.3 结果分析: ...................................................... 13 2.4 总结: .......................................................... 15 3 语义分析程序 .......................................................... 16
3.1 实验目的: ...................................................... 16 3.2 实验要求: ...................................................... 16 3.3 算法思想: ...................................................... 16
3.3.1 程序结构图 ................................................ 16 3.3.2 设置语义过程 .............................................. 20 3.3.3 函数lrparser 在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值语句进行翻译。 ... 21 3.3.4 简单赋值语句的翻译文法 .................................... 21 3.4 结果分析 ........................................................ 22 3.5 总结: .......................................................... 25
1 词法分析(李梦珂 201181216 负责)
1.1 实验目的
设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。
1.2 实验要求
设计、编制并调试一个词法分析程序,三人一组。 1.2.1待分析的简单的词法
(1)关键字:
int if then else while do read write 所有的关键字都是小写。 (2)运算符和界符
: := = + - ++ -- * / < <= != > >= = ; ( ) { } # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit*
(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。
1.2.2 各种单词符号对应的种别码:
表1.1 各种单词符号对应的种别码
1.2.3 词法分析程序的功能:
输入:所给文法的源程序字符串。
输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码;
token为存放的单词自身字符串; sum为整型常数。 例如:对源程序输入如下: {
Int x,y; X:=2*y; If(x>5)
Then x:=2*x+2/3; }#
后经词法分析输出如下序列:({ 35} (int 1)(x 10)(, 33)(y 10) (;26)(x 10)
1.3 词法分析程序的算法思想:
算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 1.3.1 主程序示意图:
主程序示意图如图1.1所示。其中初始包括以下两个方面: ⑴ 关键字表的初值。
关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:
Char *rwtab[6] = {“int”, “if”, “then”, “else”,“while”, “do”, “read”,”write”};
图1.1
(2)程序中需要用到的主要变量为syn,token和sum
1.3.2 扫描子程序的算法思想:
首先设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn用来存放单词符号的种别码。扫描子程序主要部分流程如图1.2所示。
编译原理课程设计——简单编译器
图 1.2
1.3.3 词法分析程序的C语言程序源代码: 1.3.4 结果分析:
输入如下:
{
Int x,y; X:=2*y; If(x>5)
Then x:=2*x+2/3; }#
后经词法分析输出如下序列:({ 35} (int 1)(x 10)(, 33)(y 10) 如图1.3所示:
图1.3
(;26)(x 10)
1.3.5 总结:
词法分析的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。通过本试验的完成,更加加深了对词法分析原理的理解。
2 语法分析
2.1 实验目的
编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。
2.2实验要求
利用C语言编制递归下降分析程序,并对简单语言进行语法分析。 2.2.1 待分析的简单语言的语法
用扩充的BNF表示如下: ⑴<程序>::=<声明><语句串>; ⑵<语句串>::=<语句>{;<语句>} ⑶<语句>::=<赋值语句> ⑷<赋值语句>::=ID:=<表达式> ⑸<表达式>::=<项>{+<项> | -<项>} ⑹<项>::=<因子>{*<因子> | /<因子> ⑺<因子>::=ID | NUM | (<表达式>) 2.2.2 实验算法结构
输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。
例如: 输入 {
int a,x,b;
a:=9;
x:=2*3; b:=a+x } 输出 success!
语法分析程序的算法思想 (1)主程序示意图如图2.1所示。
图2.1 语法分析主程序示意图
(2)递归下降分析程序示意图如图2.2所示。
图2.2 递归下降分析程序示意图
(3)语句串分析过程示意图如图2.3所示。
图2-3 语句串分析示意图
(4)statement语句分析程序流程如图2.4、2.5、2.6、2.7所示。
图2.4 statement语句分析函数示意图
2.5 expression表达式分析函数示意图
图
图 2.6 term分析函数示意图 图2.7 factor分析过程示意图
2.3 结果分析:
输入 后输出success! 如图2.8所示:
图2.8
输入 后输出 error 如图2.9所示:
图2.9
2.4 总结:
通过本次试验,了解了语法分析的运行过程,主程序大致流程为:“置初值” 调用scaner函数读下一个单词符号 调用IrParse 结束。递归下降分析的大致流程为:“先判断是否有声明” 不是则“出错处理”,若是则“调用scaner函数” 调用语句串分析函数 “判断是否为end” 不是则“出错处理”,若是则调用scaner函数 “判断syn=0&&kk=0是否成立”成立则说明分析成功打印出来。不成立则“出错处理”。
3 语义分析程序
3.1 实验目的:
通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。
3.2 实验要求:
采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。
3.3 算法思想:
3.3.1 程序结构图
(1)主程序示意图如图3.1所示。
图3.1 语法分析主程序示意图
(2)递归下降分析程序示意图如图3.2所示。 (3)语句串分析过程示意图如图3.3所示。
图3.2递归下降分析程序示意图
图3.3 语句串分析示意图
(4)statement语句分析程序流程如图3.4、3.5、3.6、3.7所示。
图3.4 statement语句分析函数示意图 图3.5 expression表达式分析函数示意图
图 3.6 term分析函数示意图
图2-7 factor分析过程示意图
3.3.2 设置语义过程
(1)emit(char *result,char *ag1,char *op,char *ag2) 该函数的功能是生成一个三地址语句送到四元式表中。 四元式表的结构如下: struct
{ char result[8]; char ag1[8]; char op[8]; char ag2[8];
正在阅读:
编译原理课设 (中版)05-10
小学生二年级不要捉蝴蝶看图写话06-13
浅谈护理美学中的礼仪美09-19
我的最爱作文400字07-04
奇迹的代价02-12
某培训机构项目可行性分析研究报告11-23
从海底捞的成功看我国餐饮企业人力资源管理学士学位论文11-01
华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计04-28
金融改革比较分析12-28
思品02-29
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 编译
- 原理
- 小学美术五年级下册第11课《飞天畅想》教学设计
- 4.5磁力大小会变化吗
- 四大恶习最伤颈椎
- SLIPA喉罩在麻醉手术中的临床应用
- 货币银行学重点难点复习资料
- 公路沥青路面快速养护技术
- 文明施工安全生产守则
- 砂水分离器说明书
- 系统、供氧系统技术审评规范(2009版)
- 婚姻无效制度论_从英美法到中国法_薛宁兰
- 最新临床研究知情同意书模板资料
- 2015中考压轴题系列46_动态几何之其他问题(平面几何)
- 10-1第十章植物界的基本类群与演化
- 高中政治知识框架总结结构全图(必修1-4)
- 文山学院本科生毕业论文设计手册
- 41届成都春季房交会情况汇报
- CAD2008使用技巧大荟萃(更新版)
- 伯明翰大学人力资源管理硕士专业
- 小学口语交际教学策略
- 大学生面试应答礼仪