编译原理-第三章 词法分析-3.2 输入缓冲
输入缓冲:
加快源程序读入速度
- 缓冲区对:
- 减少用于处理单个输入字符的时间开销
- lexemeBegin指针:该指针指向当前词素的开始处,当前正试图确定这个词素的结尾;确定一个词素后,lexemeBegin指针指向该词素之后的第一个字符
- forward指针:一直向前扫描,直到发现某个模式被匹配为止,并且前移时首先要检查是否已经到达某个缓冲区的末尾;确定一个词素后,forward指针将指向该词素结尾的字符
- 哨兵标记:扩展每个缓冲区,使他们在末尾包含一个"哨兵"字符,就可以把对缓冲区末端的测试和对当前字符的测试合二为一
- 作用:合并forward指针前移时的检查操作,即检查是否到达缓冲区的末尾和确定读入的字符是什么
- 哨兵字符必须是一个不会在源程序中出现的特殊字符,可以选择eof,任何不是出现在某个缓冲区末尾的eof都表示达到了输入末尾
- 前移forward指针的算法:
- 大部分情况下只需要进行一次测试就可以根据forward所指向的字符完成多路分支跳转;只有当确实处于缓冲区末尾或输入末尾时,才需要进行更多的测试
参考——《编译原理(第二版)》
作者:方知有
Motto: 热爱可抵岁月漫长
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
所有评论和私信都会在第一时间处理,如有问题或建议,请多多赐教!
支持博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!