实验 1: 扫描器的设计与实现1.1. 目的和要求1. 加深对词法分析理论的理解,培育动手实践的能力。2. 学会从以字符串表示的源程序中识别出具有独立意义的基本语法单位,同时指出它们的属性的方法和技术。1.2. 实验环境Windows XP + WinTC1911.3. 实验准备1、先将课本 3。5 节词法分析程序的生成仔细的学习一遍,理解词法分析程序的构成过程.2、写出 C 语言测试程序,分析可能得到的结果。测试程序:#define pi 3.14void main(){ double r = 2。5; double s = 0.0; s = pi*r*r; printf("%f",s);}预测结果:(513 , # )(14,define) ( 100 , pi ) (200,3 ) (514,. ) ( 200,14) ( 1 , void)(2,main ) ( 502,()(503,))(506,{)(15,double)(100,r)(402,=)(200,2)(514,。)(200,5)(501,;)(15,double)(100,s)(402,=)(200,0)(514,.)(200,0)(501,;)(100,s)(402,=)(100,pi)(416,*)(100,r)(416,*)( 100 , r) ( 501 , ; ) ( 12,printf)(502 , ( )(509 , ” ) ( 511, % ) (100,f) ( 509 , ” )(512,,)(100,s)(503,))(501,;)(507,})1.4. 实验内容及步骤1、输入已给的文本格式的扫描程序 Lexical.c 文件,然后编译运行,检查修改错误。2、编译成功后,提示输入 C 语言测试程序,用回车键查看输出的单词流,即单词符号及其属性.3、比较自己分析的结果和屏幕上的输出结果.1.5. 实验小结1、得到的经验。通过本次实验,我了解了如何设计、编制并调试词法分析程序,加深了对词法分析原理的理解.同时,在编制和调试程序时要全面考虑,避开漏掉或者错误定义定界符等,造成不必要的错误。2、遇到的主要问题。忘记对空格、回车符等定界符进行设置等。3、改进方案。(1)char *keywords[15] = {”void",”main”,”if”,"then","break",”int”,"char",”float”,”include”,”for","while”,"printf",”scanf","define”,”double"};(2)case 13:{flag = 14;status = 1;break;}case 14:{flag = 15;status = 1;break;}(3)case’。’:{words[j] = ch;words[j+1] = '\0’;flag = 514;break;}case' ':{words[j] = ’ ';flag = 250;break;}case’\n':{flag = 251;break;}(4)else if(flag == 250||flag == 251){}修改前源代码:#include"std...