首页 > 其他 > 详细

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

时间:2020-03-11 16:47:43      阅读:87      评论:0      收藏:0      [点我收藏+]

输入缓冲:

  加快源程序读入速度

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

 

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

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

原文:https://www.cnblogs.com/fangzhiyou/p/12460705.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!