- 2
- 0
- 约1.95万字
- 约 46页
- 2020-11-25 发布于湖北
- 举报
精选
编译原理实验教案
编译原理实验教案
授课教师:程细才
适用专业:计算机科学与技术
使用班级:04计算机科学与技术1\2班
授课时间:2007年春季
授课学时:54/44/10学时
使用教材:编译原理
华中科技大学出版社
何炎祥 主编
实验指导书:编译原理实验指导书,
黄石理工学院计算机学院
实验教学进度表
周次
日期
实验课题
学时
实验报告次数
10
5.8-5.12
实验一 C语言子集编译程序(1)
2
0
11
5.15-5.19
实验一 C语言子集编译程序(2)
2
0
12
5.22-5.26
实验一 C语言子集编译程序(3)
2
1
13
5.29-6.2
实验二 LEX词法分析程序生成器
2
1
14
6.5-6.9
实验三 YACC语法分析程序生成器
2
1
实验一 C语言子集编译程序
一、实验目的
用C语言对一个C语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。
1.设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。
2.编制一个递归下降分析程序,并对C语言的简单子集进行分析。
3.通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换中间代码的语义翻译方法。
二、实验要求、内容及学时
词法分析部分:2学时
(一)待分析的C语言子集的词法:
1.关键字
main if else int return void while
所有关键字都是小写。
2.专用符号
= + - * / = = == != ; : , { } [ ] ( )
3.其他标记ID和NUM
通过以下正规式定义其他标记:
ID→letter(letter|digit)* NUM→digit(digit)*
letter→a|…|z|A|…|Z digit→0|…|9
4.空格由空白、制表符和换行符组成
空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段空格通常被忽略。各种单词符号对应的类别码:(采用一符一类别码,见下表)
单词符号
类别码
单词符号
类别码
单词符号
类别码
main
1
-
23
;
34
int
2
*
24
35
char
3
/
25
36
if
4
(
26
=
37
else
5
)
27
=
38
for
6
[
28
==
39
while
7
]
29
!=
40
ID
10
{
30
‘\0
1000
NUM
20
}
31
ERROR
-1
=
21
,
32
+
22
:
33
(二)词法分析程序的功能:
输入:所给文法的源程序字符串。
输出:二元组(syn,token或sum)构成的序列。其中,
syn 为单词类别码。
token 为存放的单词自身字符串。
sum 为整型常量。
具体实现时,可以将单词的二元组用结构进行处理。
例如:对源程序
main()
{
int i=10;
while(i) i=i-1;
}
的源文件,经词法分析后输出如下序列:
(1,main) (26,() (27,)) (30,{) (2,int) (10,i) (21,=) (20,10)
(34,;) (7,while) (26,() (10,i) (27,)) (10,i) (21,=) (10,i)
(23,-) (20,1) (34,;) (31, })
(三)词法分析程序主要算法思想:
算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。
1.主程序示意结构图(如下):
置初值
调用扫描子程序
输出单词二元组
直至输入串结束
注:
①关键字表初值
关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表可处理为一个字符串数组(实际为指向字符数组的指针数组),其描述如下:
char *KEY_WORDS[8]=
{“main”,”int”,”char”,”if”,”else”,”for”,”while”};
为分析方便,这里把main作关键字处理。
②程序中需要用到的主要变量:syn,token和sum。
2.扫描子程序(scaner)的算法思想
首先设置三个变量:token用来存放构成单词符号的字符串;sum用来存放整型单词;syn用来存放单词的类别码。扫描子程序主要部分N—S图如下:
变量初始化
忽略空格
文件是否结束
T
F
是否字母
T
F
拼字符串
是否数字
是否关键字
T
F
T
F
拼数
是否运算符、界符等符号
syn为对
您可能关注的文档
- 关于我的家乡的作文(16篇)试题 .doc
- 16种统计分析方法复习课件.docx
- 军体拳16式动作图解试题 .doc
- 归纳考试之后作文16篇.doc
- 16种常用数据分析方法最终版.docx
- 学习资料美丽中国 生态文明与建设16分题.doc
- 西门子840D G指令课件.doc
- 16母鸡说课稿强烈推荐.doc
- 16级 《新闻事业管理》课件.doc
- 可直接使用军训通讯稿16.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
原创力文档

文档评论(0)