Test语言及Lex使用说明

1 TEST语言的词法规则:
TEST语言在语法上与C语言类似,要比C语言简单的多。它的所有变量都是整型变量。具有IF、WHILE、FOR等控制语句。注释用“/*”和“*/”括起来,但不能嵌套。TEST的表达式局限于布尔表达式和算术表达式。 TEST语言的单词符号有:
标识符:name,aaa
保留字(它是标识符的子集): if,else,for,while,do,int,read,write
无符号整数:100,256
分界符:如+、-、*、/、(、)、;、‘、!等单分界符,还有双字符分界符>=、<=、!=、==、//等。
注释符:用/*….*/括起 或 从//到行尾
词法分析程序并不输出注释,在词法分析阶段,注释的内容将被删掉。为了从源程序字符流中正确识别出各类单词符号,相邻的标识符、整数或保留字之间至少要用一个空格分开。

借助工具Lex的词法分析程序构造:

使用Lex的一般步骤:单词的结构用正规式描述
 正规式ÞNFAÞDFAÞmin DFAÞ构造词法分析程序
.LEX建立词法分析程序的过程

 
三、  lex源程序的格式
    lex源程序的一般格式是:
    {说明部分}
    %%
    {转换规则部分}
    %%
    {辅助过程部分}
     其中用花括号起来的各部分都不是必须有的。当没有辅助过程部分时,第二个%%也可以省去。第一个%%是必须的,因为它标志着识别规则部分的开始,最短的合法的lex源程序是:
    %%
    它的作用是将输入串照原样抄到输出文件中。
转换规则部分是Lex源程序的核心。它是一张表,左边一列是正规式,右边一列是相应的动
Ø下面是一条典型的识别规则:
    integer printf("found keywcrd INT");
    这条规则的意思是在输入串中寻找词形“integer”,每当与之匹配成功时,就打印出“foundkeyword INT”这句话
四、LEX使用步骤:
1、编写LEX源程序,如“Cffx.l”,将“Cffx.l”与FLEX.EXE保存在同一文件夹下。
2、进入DOS环境FLEX.EXE所在文件夹,运行FLEX.EXE程序。
> FLEX cffx.l
3、运行FLEX后,产生“LEXYY.C”程序
4、用VC打开“LEXYY.C”程序,编译后产生“LEXYY.EXE”程序。
5、编写TEST语言源程序,保存为AAA.TEST,并与“LEXYY.EXE”保存在同一文件夹下。
6、进入DOS环境“LEXYY.EXE”所在文件夹,运行“LEXYY.EXE”程序。
>LEXYY.EXE  AAA.TEST    BBB.TXT
7、打开“BBB.TXT”,看词法分析的结果。

例1 假设输入文件AAA.T中程序如下,运行词法分析程序,给出输出结果。
{ int a;
a=10;
}
解:将AAA.T文件与词法分析程序最好在同一目录下,这样运行词法分析程序时可以省略路径。运行词法分析程序:
屏幕提示输入文件名:(AAA.T)和输出文件名:(BBB.T),运行结束后,屏幕提示词法分析成功。打开BBB.T文件,看到上面示例小程序的词法分析结果如下:
其中第一列是单词记号,第二列是单词值。
{ {
int int
ID a
; ;
ID a
= =
NUM 10
; ;
} }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值