的、实验内容、实验实现过程、源程序、实验结果、实验体会)。 实现代码: #include
char buf[4048]={'\\0'}; //缓冲区清0 //调用预处理程序 pro_process(buf);
//在屏幕上显示扫描缓冲区的内容 cout< void pro_process(char *buf) {      ifstream cinf(\    int i=0;                           //计数器     char old_c='\\0',cur_c;              //前一个字符,当前字符    bool in_comment=false;       //false表示当前字符未处于注释中    while(cinf.read(&cur_c,sizeof(char)))       //从文件读一个字符 {    3               switch(in_comment)          {case false:                       if(old_c=='/' && cur_c=='*')   //进入注释                        { i--;  //去除已存入扫描缓冲区的字符’/’                          in_comment=true;                        }                      else {                         if(old_c=='\\\\' && cur_c=='\\n') //发现续行                          i--; //去除已存入扫描缓冲区的字符’\\’                        else {                        if(cur_c>='A' && cur_c<='Z') //大写变小写                               cur_c+=32;                    if(cur_c=='\\t' || cur_c=='\\n')  //空格取代tab换行                               cur_c=' ';                             buf[i++]=cur_c;                             }                           }                        break;              case true:                       if(old_c=='*' && cur_c=='/')    //离开注释                          in_comment=false;           }//end of switch   4                old_c=cur_c;                        //保留前一个字符   }//end of while    buf[i++]='#';                        //在源程序词尾加字符# }                     5       实验二 简单程序设计语言的词法分析器  实验学时:2学时 实验目的:  掌握词法分析器的原理  将源程序预处理、状态图转换等结合,建立简单的程序设计语言词法分析器 实验内容:      要求能对简单程序设计语言进行词法分析,具体内容如下:  字符集          {?a?..?z?, ?0?..?9?,?+?,?=?,?*?,?,?,?;?,?(?,?)?,?#?}  若发现字符集之外的字符,即为非法字符,当出现非法字符时终止词法分析器的运行。  单词集  基本字:begin、end、integer、real 标识符:以字母开始的数字字母串 无符号整常数 无符号实常数 运算符:+、*、++、= 界符:,、;、(、)、#  错误词形:. (前后无数字字符的小数点)    单词编码   6