一、 实验目的
设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。
针对表达各类词语的一组正规表达式,设计一个确定化的最简的有限自动机,对输入
的符号串进行单词划分及词类识别。
二、实验器材
Windows7, VS2010
三、实验内容
将词法分析器分解为以下几个部分:
1. 正规表达式的解析:将正规表达式中的符号分解为常量字符、正规表达
式标识符和正规表达式运算符,然后基于正规表达式运算将正规表达式
分解为更小的正规表达式(通过正规表达式运算符进行串接)。
2. 正规表达式到 NFA 的转换:根据转换规则,基于正规表达式运算,将
正规表达式转换为非确定有限自动机,并确定各类词的终止状态。
3. NFA 的确定化:通过计算各状态的传递闭包,将 NFA 确定化,并确定
各类词的终止状态。
4. 最小化:通过子集法,求得最简的确定有限自动机,并确定各类词的终
止状态。
四、实验步骤、记录和结果
词法分析程序的源代码:
#include <stdio.h>
#include <string.h>
#include<conio.h>
#include <process.h>
#include <stdlib.h>
char prog[80],token[8],ch;
int syn,p,m,n,sum;
char *rwtab[6]={"begin","if","then","while","do","end"};
void scaner();
void main()
{
p=0;
printf("please input a string(end with '#'):");
do