一、 实验目的
设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。
二、 实验要求
2.1 待分析的简单的词法
(1)关键字:
begin if then while do end
所有的关键字都是小写。
(2)运算符和界符
: = + - * / < <= <> > >= = ;( ) #
(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:
ID = letter (letter | digit)*
NUM = digit digit*
(4)空格有空白、制表符和换行符组成。空格一般用来分隔 ID、SUM、运算符、界
符和关键字,词法分析阶段通常被忽略。
2.2 各种单词符号对应的种别码
表 2.1 各种单词符号对应的种别码
单词符号 种别码 单词符号 种别码
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
2.3 词法分析程序的功能
输入:所给文法的源程序字符串。
输出:二元组(syn,token 或 sum)构成的序列。
其中:syn 为单词种别码;
token 为存放的单词自身字符串;
sum 为整型常数。
例如:对源程序
begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列:
(1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)……
三、 词法分析程序的算法思想
算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本