- 54
- 0
- 约6.17万字
- 约 73页
- 2017-08-09 发布于安徽
- 举报
编译原理课程设计报告
课题名称: C-词法扫描器及语法分析器实现
提交文档学生姓名:
提交文档学生学号:
同组 成 员 名 单: 无
指导 教 师 姓 名:
指导教师评阅成绩:
指导教师评阅意见:
.
.
提交报告时间:2012年 6月 16日
目录
1 课程设计目标 3
2 分析与设计 4
2.1 程序结构 4
2.2 程序流程 5
3 词法分析 6
3.1 代码结构分析 6
3.2 Token定义 7
3.2.1 Token的定义和类型 7
3.2.2 Token的种别码 7
3.3 DAF分析 8
3.3.1 删除注释DFA 8
3.3.2 词法分析DFA 10
4 语法分析 14
4.1 代码结构分析 14
4.2 节点定义 15
4.2.1 节点定义和类型 15
4.2.2 各类型节点的描述 16
4.3 递归向下语法分析 16
4.3.1 C-文法 16
4.3.2 递归向下分析过程 17
5 测试结果 34
5.1 流程 34
5.2 词法分析结果 34
5.3 词法分析出错 38
5.4 语法分析结果 39
5.5 语法分析出错 41
6 总结 42
6.1 词法分析编写过程 42
6.2 语法分析编写过程 43
6.3 成果和收获 43
7 附录 44
7.1 scanner.h源文件 44
7.2 scanner.cpp源文件 45
7.3 parser.h源文件 55
7.4 parser.cpp源文件 56
1 课程设计目标
学生在学习《编译原理》课程过程中,结合各章节的构造编译程序的基本理论,要求用C或C++语言描述及上机调试,实现一个 C-Minus 小编译程序(包括词法分析,语法分析等重要子程序),使学生将理论与实际应用结合起来,受到软件设计等开发过程的全面训练,从而提高学生软件开发的能力。
要求:
(1)设计词法分析器
设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调用的子程序。功能包括:
a. 具备预处理功能。将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理子程序;
b. 能够拼出语言中的各个单词;
c. 返回(种别码, 属性值)。
(2)语法分析
要求用学习过的自底向上或自顶向下的分析方法等,实现对表达式、各种说明语句、控制语句进行语法分析。若语法正确,则用语法制导翻译法进行语义翻译;生成并打印出语法树;若语法错误,要求指出出错性质和出错位置(行号)。
2 分析与设计
2.1 程序结构
本节主要分析程序的代码结构和代码工程文件的划分。(程序由两个类组成: Scanner类和Parser类,分别为词法分析和语法分析类。工程分为四个文件:scanner.h、scanner.cpp、parser.h、parser.cpp,分别对应
2.2 程序流程
在程序中,Scanner类的对象(scanner)作为Parser类中的一个成员变量,配合Parser类进行语法分析。它们的关系是这样的:Parser类的一个成员变量scanner首先对源程序删除注释,然后进行词法分析获取所有Token,并将获取的Token存储在scanner对象的tokenList(vector类型)中。然后Parser类的语法分析程序就根据tokenList中的Token进行语法分析,生成语法树,最后打印语法树。同时,这也是程序的流程。
3 词法分析:和backToLastChar()使用(分别自增和自减1),用以指示当前待分析的char在源代码中的位置
bool commentFlag:标注注释开始的标志,为true时表示正在注释体内,即源代码进入/*之后且*/之前的状态
int lineCount:对行号计数,表示当前词法分析在源代码的行位置(每次获取到的char为/n就自增1)
bool scanSuccess:词法分析是否成功的标志
string sourseString:获取源代码的字符串
string str:在分析过程中保存Token对应的串
vectorToken tokenList:保存Token序列
//定义的Token结构体,
您可能关注的文档
- 毕业设计(论文)-企业人力资源管理系统的设计与实现.doc
- 毕业设计(论文)-企业柔性管理研究.doc
- 毕业设计(论文)-汽车备轮架加固板冲压模具设计.doc
- 毕业设计(论文)-汽车车架有限元分析.doc
- 毕业设计(论文)-汽车膜片弹簧离合器设计.doc
- 毕业设计(论文)-千分尺的三维设计与研究.doc
- 毕业设计(论文)-浅谈数控机床的维修与维护.doc
- 毕业设计(论文)-浅析建筑工程成本管理.doc
- 毕业设计(论文)-浅析数形结合在中学数学解题中的应用.doc
- 毕业设计(论文)-球形氧化铜纳米颗粒的模板合成.doc
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
最近下载
- 春节祝福短信 春节祝福短信大全 春节短信.docx VIP
- 两级ao生化工艺设计计算书.doc VIP
- 《船舶电气与自动化(船舶电气)(二三管轮)》_第二章船舶电机与电力拖动系统.ppt VIP
- 山东药品食品职业学院单招《数学》通关题库【轻巧夺冠】附答案详解.docx VIP
- 新人教版七年级下册语文诗歌鉴赏及答案.doc VIP
- 五年级数学下册全套单元测试题及答案.pdf VIP
- 一站到底游戏课件.ppt VIP
- 小学三年级下册教学设计西师版.pdf VIP
- 人教PEP版六年级下册Unit 1 How tall are you单元词形填空题(含答案).doc VIP
- 2026-2030 中枢神经系统药物市场需求趋势及发展机遇可行性研究报告.docx
原创力文档

文档评论(0)