输入缓冲:
加快源程序读入速度
- 缓冲区对:
- 减少用于处理单个输入字符的时间开销
- lexemeBegin指针:该指针指向当前词素的开始处,当前正试图确定这个词素的结尾;确定一个词素后,lexemeBegin指针指向该词素之后的第一个字符
- forward指针:一直向前扫描,直到发现某个模式被匹配为止,并且前移时首先要检查是否已经到达某个缓冲区的末尾;确定一个词素后,forward指针将指向该词素结尾的字符
- 哨兵标记:扩展每个缓冲区,使他们在末尾包含一个"哨兵"字符,就可以把对缓冲区末端的测试和对当前字符的测试合二为一
- 作用:合并forward指针前移时的检查操作,即检查是否到达缓冲区的末尾和确定读入的字符是什么
- 哨兵字符必须是一个不会在源程序中出现的特殊字符,可以选择eof,任何不是出现在某个缓冲区末尾的eof都表示达到了输入末尾
- 前移forward指针的算法:
- 大部分情况下只需要进行一次测试就可以根据forward所指向的字符完成多路分支跳转;只有当确实处于缓冲区末尾或输入末尾时,才需要进行更多的测试
参考——《编译原理(第二版)》