文档介绍:编译原理实验报告
院(系): 信息技术学院
专业:
学生姓名: _
班级:_ _ 学号:
题目: 词法分析器_____
起迄日期: _ ___
设计地点:
指导教师:
实验目的
设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。
(1)关键字:
bengin if then while do end start for
所有的关键字都是小写。
(2)运算符和界符:
:= + - * / < <= <> > >= = ; ( ) # ! @ &
(3)其他单词是标志符(ID)和整形常数(NUM),通过以下正规式定义:
ID=letter(letter|digit)*
NUM=digit digit*
(4)空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。
单词符号
种别码
单词符号
种别码
begin
1
:
17
if
2
:=
18
then
3
<
20
while
4
<>
21
do
5
<=
22
end
6
>
23
Letter(letter|digit)
10
>=
24
digit digit *
11
=
25
+
13
;
26
-
14
(
27
*
15
)
28
/
16
#
0
!
29
@
30
^
30
&
30
输入:所给文法的源程序字符串。
输出:二元组(syn,token或sum)构成的序列。
其中:syn为单词种别码;
token为存放的单词自身字符串;
sum为整形常数。
功能测试:
程序调试界面如下:
输入字符串begin x:=9; for x>0 then x:= 2*******@1/3; end #
其结果如下图所示:
(3) 输入字符串:!@^& #其结果如下图所示:
(4) 输入字符串where#其输出结果如下图所示:
(5) 输入字符串1234# 其结果显示如下:
(6) 输入字符串@# 其结果显示如下:
(7) 输入字符串^^^^^^# 其结果显示如下:
词法分析程序的基本思想
算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想示根据扫描到单词符号的第一字符的种类,拼出相应的单词符号。
主程序示意图
主程序示意图如图C。1所示。其中初值包括如下两个方面:
关键字表的初值。
关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:
char * rwtab[6]{“begin ”,”if”,”then”,”while”,”do”,”end”,“start”, “for”};
词法分析主程序示意图
程序