欢迎来到天天文库
浏览记录
ID:14328767
大小:332.10 KB
页数:17页
时间:2018-07-28
《编译原理—实验指导书-1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《编译原理》实验指导书17《编译原理》实验指导书目录实验一、词法分析程序设计3实验一、递归下降语法分析程序设计517《编译原理》实验指导书实验一、词法分析程序设计一、实验目的通过设计、开发一个高级语言的词法分析程序,理解编译程序中词法分析器的实现原理,掌握高级程序设计语言中的各类单词的词法分析方法,加深对词法分析原理(包括正规文法、正规表达式、有限自动机、NFA到DFA的转换、DFA的最小化)的理解,提高词法分析方法的实践能力。二、实验内容及要求1.选择一种熟悉的高级语言(如C语言,Sample语言等),根据该高级语言的词法规则,总结其单词种类与各类单词的结构特征;设计、编
2、写、调试一个词法分析子程序。本实验以Sample语言为例。2.将该源程序的源文件经词法分析后输出以二元组形式(单词种别码,单词符号的属性值)表示的单词符号序列。3.编写的程序具有一定的查错能力。提交的实验报告中要有实验名称、实验目的、实验内容、实验程序清单、调试过程和运行结果,程序的主要部分做出功能说明,并有实验收获体会或改进意见等内容。4.实验前请仔细阅读实验预习提示,提示中程序仅供参考三、实验预习提示1.Sample语言的字符集1)Σ::=
3、
4、2)Σ::=
5、
6、3)
7、::=A
8、B
9、C
10、……
11、x
12、y
13、z4)::=0
14、1
15、2
16、……
17、95)::=+
18、-
19、*
20、/
21、=
22、<
23、>
24、(
25、)
26、:
27、;
28、,
29、’
30、.2.Sample语言的单词1)::=
31、
32、
33、
34、2)::=and
35、begin
36、bool
37、char
38、const
39、do
40、else
41、end
42、false
43、for
44、if
45、input
46、integer
47、not
48、or
49、output
50、program
51、read
52、real
53、repeat
54、then
55、to
56、true
57、until
58、var
59、w
60、hile
61、write3)::=
62、
63、4)::=
64、
65、
66、5)::=
67、+
68、-17《编译原理》实验指导书1)::=
69、2)::=
70、.
71、.e
72、.E3)::=true
73、false4)::=<Σ>
74、<Σ>5)75、R>::=’’6)::=76、77、7)::=+78、-79、*80、/8)::=>81、<82、<>83、>=84、<=85、==9)::=and86、or87、not10)::=/*88、*/89、=90、(91、)92、:93、;94、,95、’96、.1.Sample语言程序举例(1)/*thisisasampleprogramwritinginsamplelanguage*/(2)Programexample1;(3)/*usedforillustratingcompilingprocess*/ (4)var(5)a,b,c:integer;(6)97、x:char;(7)begin(8)if(a+c*3>b)and(b>3)thenc:=3;(9)x:=2+(3*a)-b*c*8;(10)forx:=1+2to3dob:=100;(11)whilea>bdoc:=5;(12)repeata:=10;untila>b;(13)end.#2.词法分析器的功能和输出格式词法分析器的功能是输入以字符串表示的源程序,从左向右扫描每行源程序的符号,拼成单词,换成统一的二元式(单词种别码,单词符号的属性值)表示。对给定的程序通过词法分析器识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示,本程序是通过对给定路径的文件的98、分析后以单词符号和文字提示显示),本实验中,采用单词种别码是一符一种种别码的方式。类别单词种别码类别单词种别码关键字and1运算符+28begin2-29bool3*30char4/31const5<32do6>33else7<=3417《编译原理》实验指导书end1>=28false2==29for3<>30if4标识符id31input5常数整常数32integer6实常数33not7字符常数34or8布尔常数35output9分界符=36program10;37read11,38real12‘39repeat
75、R>::=’’6)::=
76、
77、7)::=+
78、-
79、*
80、/8)::=>
81、<
82、<>
83、>=
84、<=
85、==9)::=and
86、or
87、not10)::=/*
88、*/
89、=
90、(
91、)
92、:
93、;
94、,
95、’
96、.1.Sample语言程序举例(1)/*thisisasampleprogramwritinginsamplelanguage*/(2)Programexample1;(3)/*usedforillustratingcompilingprocess*/ (4)var(5)a,b,c:integer;(6)
97、x:char;(7)begin(8)if(a+c*3>b)and(b>3)thenc:=3;(9)x:=2+(3*a)-b*c*8;(10)forx:=1+2to3dob:=100;(11)whilea>bdoc:=5;(12)repeata:=10;untila>b;(13)end.#2.词法分析器的功能和输出格式词法分析器的功能是输入以字符串表示的源程序,从左向右扫描每行源程序的符号,拼成单词,换成统一的二元式(单词种别码,单词符号的属性值)表示。对给定的程序通过词法分析器识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示,本程序是通过对给定路径的文件的
98、分析后以单词符号和文字提示显示),本实验中,采用单词种别码是一符一种种别码的方式。类别单词种别码类别单词种别码关键字and1运算符+28begin2-29bool3*30char4/31const5<32do6>33else7<=3417《编译原理》实验指导书end1>=28false2==29for3<>30if4标识符id31input5常数整常数32integer6实常数33not7字符常数34or8布尔常数35output9分界符=36program10;37read11,38real12‘39repeat
此文档下载收益归作者所有