编译方法实验指导书柴本成 赵晨 编写浙江万里学院 .01目 录实验一 有限自动机的构造与实现...........................1实验二 词法分析器的设计...............................3实验三 语法分析-递归下降分析器.......................5下载后可任意编辑实验四 LL(1)文法预测分析表的实现........................6附 录...................................................9附录一 实验结果的提交与检查.........................9附录二 实验报告参考格式.............................9附录三 Visual C++上机环境简介......................10附录四 参考程序....................................13下载后可任意编辑实验一 有限自动机的构造与实现一、实验目的1、正确理解正规式和正规集以及有限自动机的定义; 2、熟练掌握用状态转换图表示有限自动机的方法。二、实验预习提示1、 正规表示式就是一种形式化的表示法, 它能够表示单词符号的结构, 从而精确地定义单词符号集。正规表示式简称为正规式, 它表示的集合即为正规集。2、 状态转换图是一张当输入不同内容时选择不同分析路径的有向图。一个状态转换图可用于识别一定的字符串。3、有限自动机( FA) 是更一般化的状态转换图, 可用来识别正规集; 分为 DFA 和 NFA 两种。三、实验内容构造识别如下字符串的状态转换图, 并将其编程实现。1、识别标识符(以字母开始由字母和数字构成的字符串, 要求长度不超过 10); 参考程序: #include #include //字符串处理的头文件//推断一个字符是不是字母bool Isletter(char ch){if(ch>='a' && ch<='z' || ch>='A' && ch<='Z')return true;return false;}//推断一个字符是不是数字bool IsDigit(char ch){if(ch>='0' && ch<='9')return true;下载后可任意编辑return false;}//推断一个字符串是不是标识符bool IsId(char *str){if(!Isletter(str[0]))return false;int l=strlen(str);//计算字符串的长度for(int i=1;i