Posted on 2006-04-24 22:15
形式系统 阅读(2152)
评论(11) 编辑 收藏 引用 网摘 所属分类:
编译原理
实验一
词法分析
1
、目的
构造词法分析器,熟悉编译程序词法分析过程。掌握
LEX
自动生成工具的使用。
2
、内容
定义某种语言的单词,并给出编号。该语言单词包括:保留字、运算符、标识符、常量、格式符等。根据给定的语言子集构造词法分析器。输出为中间文件。
步骤:
1
、定义语言子集,根据该语言的单词分类构造
LEX
源程序。
2
、使用
LEX
工具编译
LEX
源程序,生成词法分析器的源程序。
3
、使用
C
语言编译器编译词法分析器源程序,生成可执行文件。
4
、构造一自定义语言测试程序,通过该词法分析可执行文件进行编译。生成输出列表。
说明:
1
、关于语言子集,提供一默认实现。也可自定义,形式上可变化。但要包含默认实现中的对应语句,即分支、循环、输入输出、算术运算、关系运算等。也可添加新的语句。
定义语言集:
保留字
|
内部编码
|
运算符号
|
内部编码
|
其他
|
内部编码
|
if
|
1
|
+
|
8
|
(
|
19
|
else
|
2
|
-
|
9
|
)
|
20
|
while
|
3
|
*
|
10
|
;
|
21
|
cout
|
4
|
/
|
11
|
{
|
22
|
Cin
|
5
|
**
|
12
|
}
|
23
|
>>
|
6
|
==
|
13
|
=
|
24
|
<<
|
7
|
<
|
14
|
数字(只考虑整数)
|
25
|
|
|
>
|
15
|
标识符(一个或多个字母)
|
26
|
|
|
<=
|
16
|
,
|
27
|
|
|
>=
|
17
|
var
|
28
|
|
|
<>
|
18
|
|
|
构造相应的词法分析程序。
说明:
(1)不考虑
for
语句,避免复杂化。
(
2
)为简单起见,只考虑数字类型。
实验报告要求内容:
(1)单词定义说明
(2)部分代码
(3)流程图
(3)测试用例