- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
系统软件综合训练
C语言子集编译器
雷宇马新娜编
石家庄铁道大学2010年3月
前言
编译原理是计算机科学与技术专业的一门重要的专业必修课程,又是一门对实践性要求较高的课程。为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据编译程序的一般原理和基本方法,通过具体语言的编译程序的编写,掌握编译程序的主要实现技术,并养成良好的程序设计技能。
本课程设计涵盖了编译原理课程主要教学内容。不同层次不同需要的学校可根据本专业教学要求选择,也可自行开发实验内容。
本书由雷宇、马新娜等综合编写,并得到众多师生的大力支持,在此一并感谢。由于编者水平所限,时间仓促,错误及欠缺之处恳请批评指正。
编者
石家庄铁道大学计算机系2010.3
1
C语言子集编译器
一、实验目的
通过本次课程设计,要求在词法分析、语法分析和语义分析等方面加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
二、实验要求
对一个C语言的子集(即简化后的C语言)编制一个编译程序,编程工具不限(C/VC++/Java/VB/Delphi等)。主要包括以下步骤:
1.词法分析
设计、编制并调试该C语言子集的词法分析程序,要求显示二元组形式的结果。
2.语法分析
编制一个语法分析程序,分析方法不限,实现对词法分析程序所提供的单词序列进行语法检查和结构分析。
3.语义分析
采用语法制导翻译原理,将语法分析所识别的语法成分变换成四元式形式的中间代码序列,要求显示中间代码结果。
三、时间分配
日期安排
实验内容
备注
第1天
明确题目要求、确定实现方法等
第2-4天
完成程序编制
第5天
上机演示,回答教师提问,准备书写实验报告
实验报告包括总体描述、算法思想描述及程序框图、程序运行情况、使用说明,实习体会心得等;最后将以上文字材料及程序装订。
四、成绩评定
2
平时表现:30%上机演示:40%设计报告:30%
五、参考资料
《编译原理(第2版)》
清华大学出版社
张素琴等编著
《编译程序的设计与实现》
高等教育出版社
刘磊等编著
《程序设计语言编译原理(第3版)》
国防工业出版社
陈火旺等编著
《编译原理课程设计》
机械工业出版社
王雷等编著
六、待分析的C语言子集
1.待分析的C语言的子集文法
(1)程序→main()语句块
(2)语句块→{语句串}
(3)语句串→ε|语句;语句串
(4)语句→赋值语句|条件语句|循环语句
(5)赋值语句→ID=表达式
(6)条件语句→if(条件)语句块
(7)循环语句→while(条件)语句块
(8)条件→表达式关系运算符表达式
(9)表达式→项|表达式+项|表达式-项
(10)项→因子|项*因子|项/因子
(11)因子→ID|NUM|(表达式)
(12)关系运算符→|=||=|==|!=
注:该文法省略了变量说明部分,即标志符可以不经定义而直接使用。
2.待分析的C语言的子集词法
a.关键字
mainifwhile注:关键字必须小写
b..运算符和界符
=+-*/====!=;{}()
c.标志符ID和常数NUM
通过以下正规式定义其他标记:
ID→letter(letter|digit)*NUM→digitdigit*
letter→a|…|z|A|…|Zdigit→0|…|9
3
d.空格由空白、制表符和换行符组成
空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段常常被忽略。
e.各种单词符号对应的种别码
单词符号
种别码
单词符号
种别码
main
1
)
27
if
2
{
28
while
3
}
29
ID
10
;
30
NUM
20
31
=
21
32
+
22
=
33
-
23
=
34
*
24
!=
35
/
25
==
36
(
26
3.输出的四元式举例对于程序:
main(){
i=2*3+4;
if(i10){j=3;};
while(j0){k=1;};
}
输出的四元式序列如下:
(1)(*,2,3,T1)
(2)(+,T1,4,T2)
(3)(=,T2,,i)
(4)(j,i,10,6)
(5)(j,,,7)
(6)
您可能关注的文档
- 2二年级基础复习资料.docx
- 实验一操作系统Windows10使用.docx
- 《纵隔肿瘤》ppt课件.ppt (1).pptx
- 模板-化工原理课程设计_苯_甲苯精馏塔设计(最终版).docx
- 大型游乐设备安全培训课件.pptx
- 2019年下学期期末考试试卷小一数学.docx
- 第一单元课件colour.pptx
- 高中政治生产与经济制度集体备课教案.docx
- 03-2001190826-吴语音-毕业论文(设计).docx
- 北京高考词汇一本通.docx
- 某区纪委书记年度民主生活会“四个带头”个人对照检查材料.docx
- 某县纪委监委2024年工作总结及2025年工作计划.docx
- 某市场监督管理局2024年第四季度意识形态领域风险分析研判报告.docx
- 县委书记履行全面从严治党“第一责任人”职责情况汇报.docx
- 税务局党委书记2024年抓党建工作述职报告.docx
- 某市税务局副局长202X年第一季度“一岗双责”履行情况报告.docx
- 副县长在全县元旦春节前后安全生产和消防安全工作部署会议上的讲话.docx
- 某市委书记个人述职报告.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料1.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料.docx
文档评论(0)