当前位置: 首页 > article >正文

【编译原理】看书笔记

参考书籍:《编译系统透视_图解编译原理》

1. 词法及语法分析

1.1 如何理解上下文无关法?

编译器用生成式来对代码进行词法解析,只需要使用生成式约定的规则,就可以从一串文本中,确定一个符合语法的语句,不需要这条语句前面的内容(即上文),和下面的内容来确定(即下文)。这样公式化的解析方式,实现起来很简单,有利于编译器的设计和实现。

《编译系统透视_图解编译原理》书中的状态转移图相对于生成式更好理解,建议采用书中的状态转移图去画生成式。

生成式在我们前面的文章中有讲解过。简单来说,一条语句的生成式就是:

语句 = 起始符 + 中间内容 + 结束符。其中,中间内容又可以包含其他语句,形成嵌套结构。

根据以上思路去编写代码,只需要:

  1. 先根据起始符号,判断语句可能是哪种类型,这一步缩小了判断的范围,便于后续的解析;
  2. 再持续向下解析,进一步判断语句的类型以及获取语句的成分,内容;
  3. 最后判断解析结束符,明确语句的边界,完成语句解析。

有些教材大篇幅讲BNF,看得头疼。亲自写一写能更好地理解。


http://www.kler.cn/a/308642.html

相关文章:

  • 如何为电子课程创造创意
  • 设计模式-七个基本原则之一-迪米特法则 + 案例
  • 黄色校正电容102j100
  • 解决:WSL2可视化opencv和pyqt冲突:QObject::moveToThread
  • AI生活之我用AI处理Excel表格
  • Linux手动安装nginx
  • keep-alive缓存不了iframe
  • 快速开发与维护:探索 AndroidAnnotations
  • Edegex Foundry docker和源码安装
  • uniapp与webview进行数据通信
  • 每个电脑都有ip地址吗?不同电脑ip地址一样吗
  • 爬虫代理失效怎么处理?全面解决方案
  • 【智路】智路OS 设备接入开发
  • 力扣122.-买卖股票的最佳时机 II(Java详细题解)
  • Python数据分析 Pandas基本操作
  • .NET 6.0 + WPF 使用 Prism 框架实现导航
  • Linux下编译Kratos
  • 如何动态获取路由上的参数
  • 最短路径算法
  • 详解QT元对象系统用法
  • webpack原理简述
  • java实现真值表代码(不完善)恳求大佬指导
  • 利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)
  • 使用 Visual Studio Code 配置 C++ 开发环境的详细指南
  • sqlx1.3.4版本的问题
  • 【MySQL】Windows下重启MySQL服务时,报错:服务名无效