1.2预处理

  • PASCAL-S大小写不敏感,因此需要将PASCAL-S源程序中的所有大写字母转化为小写字母。
  • 同时也需要在PASCAL-S源程序的最前面加入一个换行符,我们先不用考虑原因(后文会有解释),总之这是为了方便lex预读取行,便于提供更加详细的报错信息。
  • 需要设计一个函数,可以从输入文件读入PASCAL-S源程序,在最开始加入一个换行符,并将所有的大小字母转化为小写字母。
  • 预处理的结果保存在”preProcessed.pas”中,其后真正的利用lex进行词法分析的输入文件实际上就是这个保存了预处理后的PASCAL-S源程序的文件。

  • 函数接口

    1. void preProcess(string inName);
  • 返回值

  • 参数列表 | 参数 | 描述 | | —- | —- | | string inName | 输入文件名 |

  • 伪代码
    void preProcess(string inName) {
      将输入文件关联到输入文件流fin;
      将"preProcessed.pas"关联到输出文件流fout;
      string str;
      while (从输入文件流获取一行,保存到str中) {
          将str中的大写字母转化为小写字母;
          fout << endl << str;
      }
      关闭输入文件流;
      关闭输出文件流;
    }