实验2词法分析程序的设计
一、实验目的
掌握计算机语言的词法分析程序的开发法。
二、实验容
编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。
三、实验要求
1、根据以下的正规式,编制正规文法,画出状态图;
标识符
字母字母数字字符
十进制整数
0(123456789)(0123456789)
八进制整数
0(1234567)(01234567)
十六进制整数0x
(
0123456789abcdef
)
(0123456789abcdef)
运算符和界符;
关键字
ifthe
elsewhiledo
2、根据状态图,设计词法分析函数i
tsca
,完成以下功能:1)从文本文件中读入测试源代码,根据状态转换图,分析出一个单词,2)以二元式形式输出单词单词种类,单词属性其中单词种类用整数表示:0:标识符1:十进制整数2:八进制整数3:十六进制整数运算符和界符,关键字采用一字一符,不编码其中单词属性表示如下:标识符,整数由于采用一类一符,属性用单词表示运算符和界符,关键字采用一字一符,属性为空
3、编写测试程序,反复调用函数sca
,输出单词种别和属性。
四、实验环境
PC微机DOS操作系统或Wi
dows操作系统TurboC程序集成环境或VisualC程序集成环境
五、实验步骤
1、根据正规式,画出状态转换图;
专业资料
f空白
字母0
字母或数字
非字母与数字1
2
09
19
非数字
3
4
非17与x
07
0
517
非07
6
7
x
09或af
09或af
非09与af
8
9
或或或或或或或或或
11
10
ifthe
elsewhiledo
12
2、根据状态图,设计词法分析算法;
观察状态图,其中状态2、4、7、10(右上角打了星号)需要回调一个字符。
声明一些变量和函数:
ch字符变量,存放最新读进的源程序字符。
strToke
字符串变量,存放构成单词符号的字符串。
GetChar子函数,将下一输入字符读到ch中,搜索指示器前移一字符位置。
GetBC子函数,检查ch中的字符是否为空白。若是,则调用GetChar直至ch
中进入一个非空白字符。
Co
cat子函数,将ch中的字符连接到strToke
之后。
IsLetter布尔函数,判断ch中的字符是否为字母。
IsDigit布尔函数,判断ch中的字符是否为数字。
Reserve
整型函数,对strToke
中的字符串查找保留字表,若它是一个
保留字则返回它的编码,否则返回0。
SearchOp整型函数,对ch查找运算符和界符,若它是一个运算符或界符,则
返回它的编码,否则返回0。
Retract子函数,将搜索指示器回调一个字符位置,将ch置为空白字符。
r