《编译原理》课程实验报告
课程实验题目:
词法分析器
学
班
学
姓
院:
级:
号:
名:
软件工程
1505 班
04153140
邢鹏超
指导教师姓名:
完 成 时 间 :
陈 燕
2017 年 10 月 30 日
一.实验目的
能够采用 C 编程语言实现简单的词法分析程序;设计、编制并调试一个词法
分析程序,加深对词法分析原理的理解。
二.实验要求
1. 对单词的构词规则有明确的定义;
2. 编写的分析程序能够正确识别源程序中的单词符号;
3. 识别出的单词以<单词符号,种别码>的形式保存在符号表中(链表);
4. 词法分析中源程序的输入以.c 格式,分析后的符号表,将二元组保存在
.txt 文件中。
三.单词分类表
单词符号
种别码
单词符号
种别码
auto
int
break
long
case
register
char
return
const
short
continue
signed
1
3
5
7
9
11
13
15
17
19
21
23
double
struct
else
switch
enum
typedef
extern
union
float
unsigned
for
void
2
4
6
8
10
12
14
16
18
20
22
24
default
sizeof
do
static
\a
\f
\t
\\
\’
\0
\ xhh
标识符
(
[
{
‘
:
%
+
=
&
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
goto
volatile
while
if
\b
\n
\v
\?
\”
\ddd
数字
#
)
]
}
*
~
^
?
|
!
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
<
>=
>>
<<
<=
++
-
->
%A(A 可为 d’s’c)
_
67
69
71
73
75
77
79
81
83
85
87
89
91
>
==
!=
&&
||
?=
--
“
;
/
其他类别
68
70
72
74
76
78
80
82
84
86
88
90
99
四.单词结构描述(正规式)
ID = _ | letter (letter | digit)*
NUM = digit digit*
五.单词状态转换图
六.算法描述
1、算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号;
2、其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符
号。
七.程序结构
整体:
扫描注释:
扫描数字:
扫描引导:
扫描单词: