编译原理-第三章 词法分析-3.2 输入缓冲

输入缓冲:

  加快源程序读入速度

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

 

参考——《编译原理(第二版)》

posted @ 2020-03-11 16:10  方知有  阅读(704)  评论(0编辑  收藏  举报